Java虚拟机基本运行原理——粗谈

一、基本代码执行原理

在这里插入图片描述

二、数组运行原理(引用数据类型)

在这里插入图片描述

三、面向对象/静态区运行原理(以动态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)解析:将常量池中的符号引用替换为直接引用的过程。符号引用以一组符号来描述所引用的目标,与虚拟机布局无关,虚拟机也不知道该目标的位置。转为直接引用后,说明确实加载到内存中,与虚拟机布局有了关联,这样就能定位目标位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值