一、基本代码执行原理
二、数组运行原理(引用数据类型)
三、面向对象/静态区运行原理(以动态ID设置为例)
public class Person {
private String name = null;
private int age = 0;
private int id = 0;
private static int count = 0;
{
id = ++count;
}
public int getId() {
return id;
}
}
四、类加载和创建时间轴
(1)加载.class文件的时候,由于底层操作系统不能编译jvm的一套指令集规范,所以需要
执行引擎
,调取本地库接口
转为其他语言,然后交给CPU执行,主要是加载到了运行时数据区
。
(2)加载采用的是双亲委派(全盘负责委托机制),全盘负责,指的是当一个装载器装载一个类时,除非显示的使用另外一个装载器,否则该类所依赖及引用的类也由这个装载器载入。
(3)验证作用:确保Class文件的字节流中包含信息符合当前虚拟机要求,不会危害虚拟机自身安全。文件格式验证,元数据验证,字节码验证,符号引用验证。
(4)准备:为成员变量赋值
(5)解析:将常量池中的符号引用替换为直接引用的过程。符号引用以一组符号来描述所引用的目标,与虚拟机布局无关,虚拟机也不知道该目标的位置。转为直接引用后,说明确实加载到内存中,与虚拟机布局有了关联,这样就能定位目标位置