java - 带有描述的热点 VM 操作列表

标签 java jvm-hotspot g1gc

Java Hotspot VM 可以执行许多不同的 VM 操作。在调试安全点时间时,了解安全点的用途是很有用的。其中一些是显而易见的:G1IncCollectionPauseFindDeadlocks,但有些不是:CGC_Operation无 vm 操作。有 VMOps.java,但它只列出可能的值,而不是它们的含义。

目前,我需要知道 CGC_Operation 在 G1GC 上下文中做了什么。我怀疑它与 ConcurrentGCThread 和 Old gen collection 有关,但我想确认一下,也有一些引用资料可以寻找其他操作。

例子:

-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 表示用于各种清理 Activity 的特殊类型的定期安全点,请参阅 this answer

关于java - 带有描述的热点 VM 操作列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606817/

相关文章:

java - 在运行时根据提供的依赖项动态创建 Java 类的实现

java - google guice 是否为通过 setter 注入(inject)可变依赖项提供安全发布保证?

java - 如何理解 Java 热点错误

java - 垃圾回收频繁导致服务吞吐量低

Java G1 垃圾收集器生成 Java 不一致?

java - 每次重写方法时都需要调用 "super.XXX"吗?

java - 如何在没有 FORM POST 操作键的情况下编写项目数组的 HTML BODY 字符串?

java - Jvm native 代码编译疯狂 - 即使在编译代码后,我似乎也会在一段时间内遭受奇怪的性能损失。为什么?

java - 如何检查 Java 代码的汇编输出?

java - 为什么在使用 G1 GC 时推荐使用 Java 10?