Java GC垃圾收集器
常用命令:
-XX:+PrintGCDetails
-XX:+PrintCommandLineFlags
-XX:ParallelGCThreads
1.serial + serialOld
-XX:+UseSerialGC 对应日志的新生代老年代名字 DefNew Tenured
2.ParNew + serialOld 将不推荐 对应日志 ParNew
-XX:+UseParNewGC
3.Parallel Scanvenge + Parallel Old java8默认组合 PSYoungGen ParOOldGen
-XX:+UseParallelGC
-XX:MaxGCPauseMillis//控制合适的停顿时间
1对1
多对1
多对多
4 ParNew + CMS + serialOld
-XX:+UseConcMarkSweepGC
缺点:
1.标记清楚有内存碎片
2.需要serialOld进行担保,一旦失败就会造成一次较大停顿,因为并发清除的时候还在产生垃圾,这些垃圾当次无法清除.
G1收集器改变了堆的结构分成了很多region来提高效率
新生代GC时如果被老年代引用了怎么办?
JVM解决这个问题的方式是用了一个RemeberedSet来记录,从而避免全堆扫描.