JVM内存区域划分

来源:互联网 发布:淘宝现在什么好做 编辑:程序博客网 时间:2024/04/28 13:44

《深入理解Java虚拟机:JVM高级特性与最佳实践》摘录

JVM内存区域划分

这里写图片描述
一、程序计数器
线程私有;当前线程执行的字节码的行号指示器;如果线程执行的是java方法,则计数器记录的为正在执行的虚拟机字节码指令地址,如果为Native方法,则为空,此内存区域是唯一一个在虚拟机规范中没有定义OOM的区域。
二、Java虚拟机栈
线程私有;每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等,每个方法被调用直至完成的过程,就对应着一个栈帧在虚拟机栈从入栈到出栈的过程
三、本地方法栈
线程私有;本地方法栈与Java虚拟机栈类似,只不过是为虚拟机使用到的Native服务
四、Java堆
线程共享;存放对象实例
五、方法区
线程共享;存储用于已被虚拟机加载的类信息、常量、静态变量、即时编译器后的代码数据等
六、运行是常量池
方法区的一部分,存放编译器生成的各种字面量和符号引用

对象访问

一、通过句柄访问对象:reference中存储稳定的句柄地址,在对象被移动时只改变句柄中的实例数据指针,而reference本身不需要改变。
这里写图片描述
二、直接指针访问:速度快,节省一次指针定位的时间开销,HotSpot使用该方式
这里写图片描述

0 0
原创粉丝点击