java面试题网

普通会员

118

帖子

12

回复

165

积分

楼主
发表于 2018-05-25 14:35:28 | 查看: 5011| 回复: 0

虚拟机JVM 组成部分

程序计数器

指示当前程序执行到了哪一行,执行JAVA方法时纪录正在执行的虚拟机字节码指令地址;执行本地方法时,计数器值为undefined

虚拟机栈

用于执行JAVA方法。栈帧存储局部变量表、操作数栈、动态链接、方法返回地址和一些额外的附加信息。程序执行时栈帧入栈;执行完成后栈帧出栈

本地方法栈

用于执行本地方法,其它和虚拟机栈类似

clipboard.png

私有内存区伴随着线程的产生而产生,一旦线程中止,私有内存区也会自动消除,因此讨论的内存回收主要是针对共享内存区。


JAVA堆

既然GC主要发生在堆内存中,这部分我们会对堆内存进行比较详细的描述。

堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这些对象回收掉之前,他们会一直占据堆内存空间。堆是应用程序在运行期请求操作系统分配给自己的向高地址扩展的数据结构,是不连续的内存区域。

用一句话总结堆的作用:程序运行时动态申请某个大小的内存空间。 

511165335615.png

新生代:刚刚新建的对象在Eden中,经历一次Minor GC,Eden中的存活对象就会被移动到第一块survivor space S0,Eden被清空;等Eden区再满了,就再触发一次Minor GC,Eden和S0中的存活对象又会被复制送入第二块survivor space S1。S0和Eden被清空,然后下一轮S0与S1交换角色,如此循环往复。如果对象的复制次数达到16次,该对象就会被送到老年代中。


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/422_1_1.html

您的帖子在2018-05-25 14:38:04被java面试题网编辑
您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018