通过垃圾收集器MXBean确定GC类型



我正在阅读这个关于抓取 Java 垃圾回收活动信息的出色答案,并注意到GarbageCollectorMXBean没有任何关于它是什么类型的收集(次要、主要、完整等(的数据。

我想知道:是否有可能(从 Java 代码中(确定特定的 GC 是次要的、主要的还是完整的?

从垃圾收集器MXBean的摘要统计信息中打印定期GC统计信息不会为您提供此类信息。如果您使用的是 Java 1.7+,则可以订阅来自每个 GarbageCollectorMXBean 实例的 JMX 通知,并且您将收到每个 GC 事件的通知,该通知将为您提供有关每个事件的更多详细信息。通知的用户数据将包含垃圾收集通知信息类型的实例。属性 GcAction 会告诉你它是主要的还是次要的,GcCause 会告诉你 GC 事件的原因。

请注意,这引用了 com.sun包并假定了一个 HotSpot JVM。您可以避免使用纯 JMX 和 OpenType 推理在代码中引用 com.sun 包,但要谨慎假设这将适用于所有 Java 1.7 JVM。

最新更新