热点虚拟机操作列表及其说明



Java热点虚拟机可以执行许多不同的虚拟机操作。在调试安全点时间时,了解安全点的用途非常有用。其中有些是明显的:G1IncCollectionPauseFindDeadlocks,但有些不是:CGC_Operationno vm operation。有VMOps.java,但它只列出了可能的值,而不是它们的含义。

目前,我需要知道CGC_Operation在G1GC的上下文中做了什么。我怀疑它与ConcurrentGCThread和Old gen集合有关,但我想确认一下,并提供一些参考以寻找其他操作。

示例:

-XX:+PrintSafepointStatistics
...
128959.961: G1IncCollectionPause [ 2636 0 1 ] [ 0 0 0 15 52 ] 0
129986.695: G1IncCollectionPause [ 2637 0 0 ] [ 0 0 0 12 51 ] 0
137019.250: G1IncCollectionPause [ 2636 0 0 ] [ 0 0 0 13 50 ] 0
138693.219: CGC_Operation [ 2636 0 0 ] [ 0 0 0 13 338 ] 0
138726.672: G1IncCollectionPause [ 2636 0 0 ] [ 0 0 0 13 50 ] 0
138733.984: G1IncCollectionPause [ 2636 0 1 ] [ 0 0 0 13 50 ] 0
138738.750: G1IncCollectionPause [ 2636 0 0 ] [ 0 0 0 13 62 ] 0

最好的(可能是唯一的(文档是源代码。幸运的是,HotSpot JVM源代码得到了很好的评价。

参见src/share/vm/gc_implementation/g1/vm_operations_g1.hpp:

// Concurrent GC stop-the-world operations such as remark and cleanup;
// consider sharing these with CMS's counterparts.
class VM_CGC_Operation: public VM_Operation {

no vm operation表示用于各种清理活动的特殊类型的定期安全点,请参见以下答案

最新更新