标签:程序 版本 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
标签:程序 版本 vivo 转移 pac 意思 对象 com jvm
原文地址:https://www.cnblogs.com/yuan-zhou/p/11311210.html