我的jdk版本是:
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
这是我的测试代码:
List<GarbageCollectorMXBean> beans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean bean : beans) {
System.out.println(bean.getName());
}
结果是:
PS Scavenge
PS MarkSweep
我知道PS Scavenge是&#34; Parallel Scavenge&#34;年轻一代垃圾收集器,&#34; PS MarkSweep&#34;它是什么,它是&#34; Parallel Old&#34;?
答案 0 :(得分:15)
为了其他人找到这个问题的好处,这里有一个很好的概述:
http://www.fasterj.com/articles/oraclecollectors1.shtml
引用此问题的相关部分:
年轻一代收藏家
复制(使用-XX:+ UseSerialGC启用)
串行拷贝收集器,使用一个线程将幸存的对象从Eden复制到Survivor空间 在Survivor空间之间,直到它决定他们在那里很久 足够的,它将它们复制到老一代。PS Scavenge(使用-XX:+ UseParallelGC启用)
并行清理收集器,如复制收集器,但使用多个线程 并行地了解老一代是如何做的 收集(基本上写与串行和PS旧版本一起工作 收藏家)。ParNew(启用-XX:+ UseParNewGC)
并行副本收集器,如复制收集器,但使用多个线程 并行并有一个内部回调&#39;这允许老一代 收集器对它收集的对象进行操作(真正写入 使用并发收集器)。G1 Young Generation(启用-XX:+ UseG1GC)
垃圾第一收集器,使用&#39; Garbage First&#39;分裂的算法 堆积成许多较小的空间,但这些仍然是分开的 进入G1的年轻一代的伊甸园和幸存者空间。老一代收藏家
MarkSweepCompact(启用-XX:+ UseSerialGC)
串行标记扫描采集器,他们所有的爸爸,使用一个序列(一个 thread)完全标记清除垃圾收集算法,带可选项 压实。PS MarkSweep(启用-XX:+ UseParallelOldGC)
并行扫描标记扫描收集器,并行版本(即使用 MarkSweepCompact的多个线程)。ConcurrentMarkSweep(启用-XX:+ UseConcMarkSweepGC)
并发收集器,一种尝试的垃圾收集算法 在没有背景的情况下完成大部分垃圾收集工作 在应用程序线程工作时停止应用程序线程(仍有阶段 它必须停止应用程序线程,但这些阶段是 试图保持最低限度)。请注意并发收集器 无法跟上垃圾,它会故障转移到串口 MarkSweepCompact收集器(仅)下一个GC。G1混合生成(启用-XX:+ UseG1GC)
垃圾第一收集器,使用&#39; Garbage First&#39;分裂的算法 堆积成许多较小的空间。