jvm-jvm内存结构
2018-05-27 本文已影响5人
土豆有点
1.JVM的体系结构
image.pngJVM的结构基本上由上面的四部分组成。
- 1.类加载器,在JVM启动时或者类运行时需要的class加载到JVM
- 2.执行引擎,执行引擎的任务是负责执行class文件中包含的字节指令,相当于实际机器的CPU
- 3.内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者pc指针的记录器。
- 4.本地方法调用,调用C或C++实现的本地方法的代码返回的结果。
JVM内存管理
ca608a15d76706ba4a9d23793c86aabda38b35b417da741f184ce02cd19ee464.png但这个图的栈帧应该少了一个操作栈。(不是十分重要)
不过帧数据区存放了指向常量池的指针地址,当某些指令需要获得常量池的数据时,通过帧数据区中的指针地址来访问常量池的数据。此外,帧数据区还存放方法正常返回和异常终止需要的一些数据。
JVM实现里,有一种基于栈的指令集(Hotspot,oracle JVM)
基于栈的指令集有接入简单、硬件无关性、代码紧凑、栈上分配无需考虑物理的空间分配等优势,
image.png
基于栈的Hotspot的执行过程如下:
756003-20150921153455772-1445716955.gif