-Xms :设置Java堆栈的初始化大小
-Xmx :设置最大的java堆大小
-Xmn :设置Young区大小
-Xss :设置java线程堆栈大小
-XX:PermSize and MaxPermSize :设置持久带的大小
-XX:NewRatio :设置年轻代和老年代的比值
-XX:NewSize :设置年轻代的大小
-XX:SurvivorRatio=n :设置年轻代中E与俩个S去的比值
------------------打印垃圾回收器信息和设置垃圾回收器(串行、并行、并发等行为的收集器)-------
-verbose:gc :记录GC运行以及运行时间,一般用来查看GC是否有瓶颈
-XX:+PrintGCDetails :记录GC运行时的详细数据信息,包括新生占用的内存大小及消耗时间
-XX:-PrintGCTimeStamps :打印收集的时间戳
-XX:+UseParallelGC :使用并行垃圾收集器
-XX:-UseConcMarkSweepGC :使用并发标志扫描收集器
-XX:-UseSerialGC :使用串行垃圾收集器
-Xloggc:filename :设置GC记录的文件
-XX:+UseGCLogFileRotation :启用GC日志文件的自动转储
-XX:GCLogFileSize=1M :控制GC日志文件的大小
1、根据实际事情调整新生代与幸存代的大小,幸存代指的是S0和S1
2、整个堆大小=年轻代大小 +老年代大小 + 持久(永久)代大小。持久代一般固定大小为64m,所以增加年轻代就会减小老年代
3、年轻代 = 新生代+幸存代
4、官方推荐年轻代占堆的3/8 如:-Xmx24m -Xms24m -Xmn10m 10/24约等于3/8
-XX:NewRatio=3:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为3,则年轻代与年老代所占比值为1:3,年轻代占整个堆栈的1/4
5、官方推荐幸存代占新生代的1/10
-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
6、在OOM(内存溢出)时,记得DUMP出堆,确保可以排查现场问题,设置如下
-Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=d:/error.dump
7、GC算法分为4种
A、引用计数法:定期记录引用数,如果引用数为0,则清除,缺点,对于三个及以上的互相引用没法清除,如A引用B,B引用C,C引用A。自调情况要特别注意,需要有出口
B、标记清除法:标记存活对象,然后清除这之外的对象
C、标记压缩(整理)法:把存活的对象移动到一边,不存活对象移动的边界之外,然后清除边界之外的对象。多用于老年代GC
D、复制算法:把内存分成一半,复制存活对象,然后清除原来的区域。缺点:比较占内存,一般垃圾比较多,内存比较少的情况不用。一般放在年轻代,年轻代对象生命短,而中长寿命的对象就少,复制不会占太多的内存,复制小部分的对象总比压缩旧域廉价。
8、JVM收集器种类
Serial 收集器,用于新生代,串行收集器,用复制算法
ParNew收集器,用于新生代,并行收集器,用复制算法
Parellel Scavenge 用于新生代,并行收集器,用复制算法,主要关注吞吐量,设置参数为-XX:UseParallelGC ,
-XX:ParallelGCThreans = 20 :设置并行线程数为20个,一般配置成CPU个数
-XX:MaxGCPauseMillis = 100 :设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值
Serial Old 用于老年代 ,串行收集器,用标记整理算法
Parallel Old 用于老年代,并行收集器,用标记整理算法,关注吞吐量,设置参数为-XX:+UseParallelOldGC
CMS 收集器,用于老年代,并行收集器,标记清除算法,并发收集。
设置参数为:-XX:+UseConcMarkSweepGC
9、吞吐量优先的并行收集器
并行收集器主要以达到一定的吞吐量为目标,适用于科学技术和后台处理。分为两种:
1)、并行收集器(-XX:+ UseParallelGC)在次要回收中使用多线程来执行,在主要回收中使用单线程执行;
2)、并行旧生代收集器(Parallet Old Collection)(XX:+UseParallelOldGC),在次要回收和主要回收都使用多线程,当年老区填满后会触发主要回收
10、相应时间优先并发收集器
并发收集器主要保证系统的响应时间,减少垃圾收集的停顿时间。适用于应用服务器、电信领域。
CMS(Concurrent Mark Sweep)并发标记清理收集器
CMS(-XX:+UseConcMarkSweepGC)收集器在老年代使用,专门收集那些在主要回收中不可能到达的年老对象。它与应用程序并发执行,在年老代保持一直有足够的空间以保证不会发生年轻代晋升失败。
部分摘抄自网络
参考地址:http://www.cnblogs.com/parryyang/p/5750146.html
具体见收藏:http://lib.youkuaiyun.com/simba_1986/chart/JVM
1616

被折叠的 条评论
为什么被折叠?



