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

12次阅读

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

devfarmer

根据这个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

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

方泽图

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails

http://stackoverflow.com/a/573992

万能Lambda

正文完