Java虚拟机从入门到精通
文章平均质量分 69
本专栏基于《Java虚拟机从入门到精通》,参考了尚硅谷宋红康老师的教学视频,有兴趣的可到B站下载视频。仅做学习之用
Java_Male
这个作者很懒,什么都没留下…
展开
-
执行引擎 Execution Engine
解释器和JIT编译器 执行引擎的执行完全依赖PC寄存器。前端编译由javac完成,后端编译由执行引擎完成。 解释器:对字节码采用逐行解释的方式执行,将每条字节码内容翻译为本地机器指令执行 JIT编译器:虚拟机将源代码直接翻译成和本地机器平台相关的机器语言 何时使用JIT编译器? 一个被多次调用的方法,或者是一个方法体内部循环次数较多的循环体都可被称之为“热点代码”,都可以通过JIT编译器编译为本地机器指令。由于这种编译方式在方法执行过程中,因此称之为栈上替换,或简称OSR...原创 2021-07-18 17:43:10 · 149 阅读 · 0 评论 -
运行时数据区 Runtime Data Area
程序计数器 Program Counter Register 生命周期:与线程相同 占用空间:非常小 多线程:线程私有 存储:当前栈帧的下一步操作指令的地址,及当前线程执行的字节码的行号 GC和Error:没有GC和OOM Java的多线程是通过轮流切换并分配处理器执行时间的方式来实现,任何一个时刻,一个处理器(多核处理器指一个内核)都只会执行一条线程中的指令。为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程计数器互不影响,独立存储。栈帧为java方法,...原创 2021-07-18 01:16:22 · 217 阅读 · 0 评论 -
类加载器子系统 Class Loader
类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定标识(以CA FE BA BE标识符开头)。 ClassLoader只负责加载class文件,是否可以运行由执行引擎ExecutionEngine决定。 加载类的信息放到方法区的内存空间。除了类信息,方法区还会存放常量池信息,可能还包括字符串字面量和数字常量(class文件中常量池部分的内存映射) 加载阶段loading 通过一个类的全类名获取二进制字节流,将字节流所代表的的静态存储接口转化为方法区的..原创 2021-07-13 21:53:07 · 98 阅读 · 0 评论