Java 串行标记扫描压缩(PSOldGen)PS代表什么?
当我搜索我在gc日志中看到的PSOldGen垃圾收集器时,我发现它是串行标记扫描压缩的。如果这个gc是串行的,PSOldGen中的PS代表什么?好吧,这是平行扫气。但这让我困惑Java 串行标记扫描压缩(PSOldGen)PS代表什么?,java,garbage-collection,Java,Garbage Collection,当我搜索我在gc日志中看到的PSOldGen垃圾收集器时,我发现它是串行标记扫描压缩的。如果这个gc是串行的,PSOldGen中的PS代表什么?好吧,这是平行扫气。但这让我困惑 [Full GC [PSYoungGen: 647K->0K(60352K)] [PSOldGen: 45361K->45875K(54528K)] 46008K->45875K(114880K) [PSPermGen: 10201K->10201K(21248K)], 0.0359430 sec
[Full GC [PSYoungGen: 647K->0K(60352K)] [PSOldGen: 45361K->45875K(54528K)] 46008K->45875K(114880K) [PSPermGen: 10201K->10201K(21248K)], 0.0359430 secs]
在某种程度上,您是正确的,但这实际上取决于您如何配置JVM命令行选项。young gen GC是并行清除和多线程的 有趣的是,如果您使用
-XX:+UseParallelGC
启动它,那么您将得到一个串行(单线程)旧的Gen GC。如果您使用-XX:+UseParallelOldGC
,那么您将获得多线程、并行的年轻一代GC和多线程、并行的老一代GC
来源:,第7章,垃圾收集器部分
令人惊讶,不是吗。这里也有很大的修补空间!Java性能手册非常值得一读 JVM中有两个收集器:年轻的空间收集器和旧的空间收集器。HotSpot JVM正在实现一系列算法,但只有特定的收集器组合是可行的
PSYoungGen
是一种“并行清除”年轻空间GC算法,但它与旧空间的默认串行算法不兼容(Tenured
)PSOldGen
是一种串行旧空间算法,专门用于并行清除年轻空间算法-PSYNGGEN
您也可以为旧空间启用并行算法(-XX:+UseParallelOldGC
),在这种情况下,您将看到PSYoungGen
,ParOldGen
一对算法在工作
您还可以启用另一个并行年轻空间算法-XX:+UseParNewGC
,该算法将与默认的串行旧空间算法结合使用
我已经失去你了吗?:)
您可以在my中阅读有关HotSpot JVM中实现的算法的更多信息。HotSpot GC备忘单打印在我的桌面上。您可以为第一个旧收集器使用串行标记扫描压缩(终身)更新备忘单吗?是否可以为ParNew+终身制组合添加新行?当做