gpe*_*tao 13 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)
Run Code Online (Sandbox Code Playgroud)
这是我的测试代码:
List<GarbageCollectorMXBean> beans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean bean : beans) {
System.out.println(bean.getName());
}
Run Code Online (Sandbox Code Playgroud)
结果是:
PS Scavenge
PS MarkSweep
Run Code Online (Sandbox Code Playgroud)
我知道PS Scavenge是年轻一代垃圾收集器的"Parallel Scavenge","PS MarkSweep"是哪个,它是"Parallel Old"?
Mik*_*ike 21
为了其他人找到这个问题的好处,这里有一个很好的概述:
http://www.fasterj.com/articles/oraclecollectors1.shtml
引用此问题的相关部分:
年轻一代收藏家
复制(启用-XX:+ UseSerialGC)
串行拷贝收集器,使用一个线程将幸存的对象从Eden复制到Survivor空间和Survivor空间之间,直到它确定它们已存在足够长的时间,此时它将它们复制到老一辈.PS Scavenge(启用-XX:+ UseParallelGC)
并行清除收集器,如复制收集器,但并行使用多个线程,并且具有如何收集旧代的一些知识(基本上编写为使用串行和PS旧版本)收藏家).ParNew(启用-XX:+ UseParNewGC)
并行副本收集器,如复制收集器,但并行使用多个线程并具有内部"回调",允许旧代收集器对其收集的对象进行操作(真正写入使用并发收集器).G1 Young Generation(启用-XX:+ UseG1GC)
垃圾第一个收集器,使用"垃圾优先"算法将堆分成许多较小的空间,但这些仍然分为Eden和Survivor空间. G1.老一代收藏家
MarkSweepCompact(使用-XX:+ UseSerialGC启用)
串行标记扫描收集器,它们的父亲,使用串行(一个线程)完全标记清除垃圾收集算法,可选择压缩.PS MarkSweep(启用-XX:+ UseParallelOldGC)
并行扫描标记扫描收集器,MarkSweepCompact的并行版本(即使用多个线程).ConcurrentMarkSweep(使用-XX:+ UseConcMarkSweepGC启用)
并发收集器,一种垃圾收集算法,它尝试在后台执行大部分垃圾收集工作,而不会在应用程序线程正常工作时停止(仍有一些阶段需要停止应用程序线程,但试图将这些阶段保持在最低限度.请注意,如果并发收集器无法跟上垃圾,它会故障转移到串行MarkSweepCompact收集器(仅)下一个GC.G1 Mixed Generation(启用-XX:+ UseG1GC)
垃圾第一个收集器,使用'Garbage First'算法将堆分成许多较小的空间.
| 归档时间: |
|
| 查看次数: |
10181 次 |
| 最近记录: |