码迷,mamicode.com
首页 > 其他好文 > 详细

JVM内存区域划分总结

时间:2019-08-06 20:00:38      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:程序   版本   vivo   转移   pac   意思   对象   com   jvm   

发现网上有两个版本的JVM内存划分,一个是按照《深入理解JVM虚拟机》上的版本,包含程序计数器等,按照是否线程共享划分。

另一个我觉得更好记一些,也更适合我自己,在这里记录一下。

首先上思维导图:

技术图片

一个个来说道吧。

堆内存 heap

堆内存主要被划分为新生代和老年代(差不多的意思)

基本上所有对象实例都在堆中创建,因此堆内存经常发生GC回收操作。新的对象首先分配在Eden区,两个Surviior区仅作为Eden区的缓冲使用。每次GC回收一次,对象的age值就+1,当Survivor区对象age值大于15时(默认,可更改:-XX:MaxTenuringThreshold),就被转移到老年代。

新生代下又划分为三个区,即Eden Space,To Survivor ,From Survivor。新生代占用堆内存的1/3,而三个区的内存占用情况如下图:

技术图片

 

 JVM默认Yong和Old分配比例为1:2,即新生代的内存大小为堆内存的1/3。

调整参数:–XX:NewRatio

而新生代中,Eden、from、to的默认比例为8:1:1,JVM每次只会使用一块Survivor区来为对象服务,所以,不论何时,都存在一个空闲的Survivor区域

调整参数:–XX:SurvivorRatio 

 

老年代的内存大小为剩下的2/3

 

JVM内存区域划分总结

标签:程序   版本   vivo   转移   pac   意思   对象   com   jvm   

原文地址:https://www.cnblogs.com/yuan-zhou/p/11311210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!