摘要:JVM 字节码(四)静态方法、构造代码、this 以及 synchronized 关键字 一、静态代码 编译后查看对应的字节码,生成了两个方法 和 `` 静态赋值和静态代码块的集合,执行顺序和代码一致。注意不包含常量的赋值。 `` 构造方法,包含普通变量值赋值和构造函数。 cinit 的代码块如下,
阅读全文
摘要:JVM 字节码(三)异常在字节码中的处理(catch 和 throws) 在 ClassFile 中到底是如何处理异常的呢? 一、代码块异常 catch catch 中的异常代码块在异常是如何处理的呢?还记得在 Code 属性中有如下的结构吗?这代码的是一个异常表信息。 案例分析: 这段代码编译后用
阅读全文
摘要:JVM 字节码(二)方法表和属性表 上一节中对 ClassFile 的整体进行了五个详细的说明, __本节围绕 ClassFile 最重要的一个内容 方法表的 Code 属性展开__ , "更多 JVM Methods 规范(Oracle)" 一、方法表结构 1.1 方法表结构 方法表的结构如下:
阅读全文
摘要:JVM 字节码(一)字节码规范 JVM 学习资源 1. "Java ClassFile 字节码规范(Oracle)" 2. "Java 虚拟机规范(Java SE 7 中文版)" (周志明等译) 3. "Java 反编译工具 jclasslib(比 javap v 信息更详细,可以在 IDEA 插件
阅读全文
摘要:02 JVM 系列(二)内存模型 一、JVM 内存区域 JVM 会将 Java 进程所管理的内存划分为若干不同的数据区域。这些区域有各自的用途、创建/销毁时间: 一、 线程私有区域 线程私有数据区域生命周期与线程相同,依赖用户线程的启动/结束而创建/销毁(在 Hotspot VM 内,每个线程都与操
阅读全文
摘要:JVM 系列()ClassLoader 在前面一节中,主要介绍了 Class 的装载过程,Class 的装载大体上可以分为加载类、连接类和初始化 3 个阶段。本小节将主要介绍绍 Java 语言中的 ClassLoader,类装载器。它主要工作在 Class 装载的加载阶段从系统外部获得 Class
阅读全文
摘要:JVM 系列(一)类加载 类加载机制是指把 class 文件加载到内存,并对数据进行校验、解析和初始化,最终形成 JVM 可以直接使用的 Java 类型的过程。 ClassLoader 加载一个 class 文件到 JVM 时需要经过以下三个的步骤: 一、加载 将 class 文件字节码内容加载到内
阅读全文