PS MarkSweep是垃圾收集器

时间:2016-10-08 07:13:12

标签: java garbage-collection

我的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;?

1 个答案:

答案 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;分裂的算法   堆积成许多较小的空间。