关于java:jvm-的主要组成部分及其作用

4次阅读

共计 952 个字符,预计需要花费 3 分钟才能阅读完成。

1. 类加载器(Class Loader):加载类文件到内存。Class loader 只管加载,只有合乎文件构造就加载,至于是否运行,它不负责,那是有 Exectution Engine 负责的。

2. 执行引擎(Execution Engine):也叫解释器,负责解释命令,交由操作系统执行。

3. 本地库接口(Native Interface):本地接口的作用是交融不同的语言为 java 所用

4. 运行时数据区(Runtime Data Area):

(1)堆。堆是 java 对象的存储区域,任何用 new 字段调配的 java 对象实例和数组,都被调配在堆上,java 堆可用 -Xms 和 -Xmx 进行内存管制,jdk1.7 当前,运行时常量池从办法区移到了堆上。

(2)办法区:用于存储已被虚拟机加载的类信息,常量,动态变量,即时编译器编译后的代码等数据。java 培训
误区:办法区不等于永生代
很多人起因把办法区称作“永恒代”(Permanent Generation),实质上两者并不等价,只是 HotSpot 虚拟机垃圾回收器团队把 GC 分代收集扩大到了办法区,或者说是用来永恒代来实现办法区而已,这样能省去专门为办法区编写内存治理的代码,然而在 Jdk8 也移除了“永恒代”,应用 Native Memory 来实现办法区。

(3)虚拟机栈:虚拟机栈中执行每个办法的时候,都会创立一个栈桢用于存储局部变量表,操作数栈,动静链接,办法进口等信息。

(4)本地办法栈:与虚拟机施展的作用类似,相比于虚拟机栈为 Java 办法服务,本地办法栈为虚拟机应用的 Native 办法服务,执行每个本地办法的时候,都会创立一个栈帧用于存储局部变量表,操作数栈,动静链接,办法进口等信息。

(5)程序计数器。批示 Java 虚拟机下一条须要执行的字节码指令。

组件的作用:
首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集标准,并不能间接交个底层操作系统去执行,因而须要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层零碎指令,再交由 CPU 去执行,而这个过程中须要调用其余语言的本地库接口(Native Interface)来实现整个程序的性能。

正文完
 0