如何判断JVM使用的是哪种GC回收策略?


RT。最好能分别查看新生代和老年代的回收策略,有没有例如jstat,jinfo这样的命令行工具呢?谢谢!

jvm

FIRST 11 years, 6 months ago

根据 这个SO回答 jconsole 可以输出类似

Garbage collector: Name = 'PS MarkSweep', Collections = 324, Total time spent = 12 minutes
Garbage collector: Name = 'PS Scavenge', Collections = 1,132, Total time spent = 1 minute

的信息,上面是老生代,下面是新生代。
不过看起来jconsole是图形界面,如果需要命令行的话, jmap 可以用来输出某个java进程所使用的GC,类似输出如下:

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   ...

根据这里提到的 Conc Mark&Sweep ,再 查表 ,可以知道新生代使用的是 ParNew GC ,老生代使用的是 ConcurrentMarkSweep GC

事实上从表中可以得知新生代和老生代的组合其实是固定的那么几种,而且是双射的,所以只要知道其中一种就能查表得出另外一种。

popopjk answered 11 years, 6 months ago

Your Answer