目录 ??JVM内存模型及常用参数?? ??参数解释?? ?垃圾收集器? ??Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)?? ??Parallel Scavenge收集器(-XX:+UseParallelGC -XX:+UseParallelOldGC)??
目录
- ??JVM内存模型及常用参数??
- ??参数解释??
- ?垃圾收集器?
- ??Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)??
- ??Parallel Scavenge收集器(-XX:+UseParallelGC -XX:+UseParallelOldGC)??
- ??ParNew收集器(-XX:+UseParNewGC) + CMS收集器(-XX:+UseConcMarkSweepGC)??
- ??垃圾回收统计信息??
- ??CMS的相关核心参数??
- ??附:相关文章??
JVM内存模型及常用参数
参数解释
垃圾收集器
Serial收集器(??-XX:+UseSerialGC -XX:+UseSerialOldGC??)
- 新生代采用复制算法,老年代采用标记-整理算法
Parallel Scavenge收集器(??-XX:+UseParallelGC -XX:+UseParallelOldGC??)
- Parallel收集器其实就是Serial收集器的多线程版本
- Parallel Scavenge收集器关注点是吞吐量(高效率的利用CPU)。CMS等垃圾收集器的关注点更多的是用户线程的停顿时间(提高用户体验)。所谓吞吐量就是CPU中用于运行用户代码的时间与CPU总消耗时间的比值
- 新生代采用复制算法,老年代采用标记-整理算法
ParNew收集器(??-XX:+UseParNewGC???) + CMS收集器(??-XX:+UseConcMarkSweepGC??)
- 垃圾收集线程与用户线程(基本上)同时工作
- 新生代采用复制算法,老年代采用标记-清除算法
- ParNew:
- ParNew收集器其实跟Parallel收集器很类似,区别主要在于它可以和CMS收集器配合使用
- CMS:
- 优点:
- 并发收集、低停顿
- 缺点:
垃圾回收统计信息
- ??-XX:+PrintGC??
- ??-XX:+PrintGCDetails??
- ??-XX:+PrintGCTimeStamps??
- ??-Xloggc:filename??
CMS的相关核心参数
- ??-XX:+UseConcMarkSweepGC??:启用cms
- ??-XX:ConcGCThreads??:并发的GC线程数
- ??-XX:+UseCMSCompactAtFullCollection??:FullGC之后做压缩整理(减少碎片)
- ??-XX:CMSFullGCsBeforeCompaction??:多少次FullGC之后压缩一次,默认是0,代表每次FullGC后都会压缩一次
- ??-XX:CMSInitiatingOccupancyFraction??:当老年代使用达到该比例时会触发FullGC(默认是92,这是百分比)
- ??-XX:+UseCMSInitiatingOccupancyOnly??:只使用设定的回收阈值(-XX:CMSInitiatingOccupancyFraction设定的值),如果不指定,JVM仅在第一次使用设定值,后续则会自动调整
- ??-XX:+CMSScavengeBeforeRemark??:在CMS GC前启动一次minor gc,降低CMS GC标记阶段(也会对年轻代一起做标记,如果在minor gc就干掉了很多对垃圾对象,标记阶段就会减少一些标记时间)时的开销,一般CMS的GC耗时 80%都在标记阶段
- ??-XX:+CMSParallellnitialMarkEnabled??:表示在初始标记的时候多线程执行,缩短STW
- ??-XX:+CMSParallelRemarkEnabled??:在重新标记的时候多线程执行,缩短STW