JVM的区域分类


Eden区域: 新的对象生成时所使用的空间
Survivor区域: 包括from, to两个空间,用于保留正在使用的对象,延迟把这些对象移动到Old区域直到他们经历多次Scavenge GC后
New区域: 包括Eden和Survivor区域
Old区域: 寿命较长的对象保留在该区域

在Eden区域被用完的时,Scavenge GC将会自动启动,并把那些当前还存在引用的对象从Eden区域移动到to区域中。每次Scavenge GC时在form或to里还在使用的对象将会来回移动,直到他们的移动次数达到一定的限制,该限制是由MaxTenuringThreshold决定,MaxTenuringThreshold的默认值是32。这样的话一个对象可以在from和to之间进行32次交换,然后才会被移动到Old区域。

JVM启动参数 
-Xms: Heap Size的初始值
-Xmx: Heap Size的最大值
-Xmn: New区域的大小
-XX:SurvivorRatio=<n>: Eden区域的大小除以from或to区域的大小,from和to区域的大小是相等的。n默认是8

GC种类
Scavenge GC: 回收New区域的对象
Ful GC: 回收New和Old两个区域的对象

优化目标
?减少Scavenge GC次数
?缩短Scavenge GC的时间
?减少Full GC次数,尽量使Full GC不发生

优化调整的顺序

?增加Survivor区域
?增加New区域
?增加Heap区域


其他

通常-Xmn的值设置为-Xmx值的三分之一。在项目里如果临时对象使用的多的情况下,也可以将-Xmn的值设置为-Xmx值的一半。



通过调整SurvivorRatio的值可以控制对象在Survivor区域里的生存时间,SurvivorRatio的值越小,对象在Survivor区域里生存的时间越长。这样可以减少对象移动到Old领域,相应的减少Full GC的回数。


-Xverbosegc : 垃圾回收的详细输出的参数

kill -3 <pid>  : 输出JVM进程里正在处理的内容
                                                                     ------转达自Leoh’s Blog url:http://in5i.com/blog/?p=189

你可能感兴趣的:(jvm,Blog)