--- old/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/G1MonitoringSupport.java 2018-10-08 18:33:30.000000000 -0400 +++ new/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/G1MonitoringSupport.java 2018-10-08 18:33:30.000000000 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,6 +37,8 @@ // Mirror class for G1MonitoringSupport. public class G1MonitoringSupport extends VMObject { + // bool _use_legacy_monitoring; + static private CIntegerField useLegacyMonitoringField; // size_t _eden_space_committed; static private CIntegerField edenSpaceCommittedField; // size_t _eden_space_used; @@ -45,10 +47,18 @@ static private CIntegerField survivorSpaceCommittedField; // size_t _survivor_space_used; static private CIntegerField survivorSpaceUsedField; - // size_t _old_gen_committed; - static private CIntegerField oldGenCommittedField; - // size_t _old_gen_used; - static private CIntegerField oldGenUsedField; + // size_t _old_space_committed; + static private CIntegerField oldSpaceCommittedField; + // size_t _old_space_used; + static private CIntegerField oldSpaceUsedField; + // size_t _archive_space_committed; + static private CIntegerField archiveSpaceCommittedField; + // size_t _archive_space_used; + static private CIntegerField archiveSpaceUsedField; + // size_t _humongous_space_committed; + static private CIntegerField humongousSpaceCommittedField; + // size_t _humongous_space_used; + static private CIntegerField humongousSpaceUsedField; static { VM.registerVMInitializedObserver(new Observer() { @@ -61,12 +71,21 @@ static private synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("G1MonitoringSupport"); + useLegacyMonitoringField = type.getCIntegerField("_use_legacy_monitoring"); edenSpaceCommittedField = type.getCIntegerField("_eden_space_committed"); edenSpaceUsedField = type.getCIntegerField("_eden_space_used"); survivorSpaceCommittedField = type.getCIntegerField("_survivor_space_committed"); survivorSpaceUsedField = type.getCIntegerField("_survivor_space_used"); - oldGenCommittedField = type.getCIntegerField("_old_gen_committed"); - oldGenUsedField = type.getCIntegerField("_old_gen_used"); + oldSpaceCommittedField = type.getCIntegerField("_old_space_committed"); + oldSpaceUsedField = type.getCIntegerField("_old_space_used"); + archiveSpaceCommittedField = type.getCIntegerField("_archive_space_committed"); + archiveSpaceUsedField = type.getCIntegerField("_archive_space_used"); + humongousSpaceCommittedField = type.getCIntegerField("_humongous_space_committed"); + humongousSpaceUsedField = type.getCIntegerField("_humongous_space_used"); + } + + public boolean useLegacyMonitoring() { + return useLegacyMonitoringField.getValue(addr) != 0; } public long edenSpaceCommitted() { @@ -93,12 +112,40 @@ return survivorSpaceUsed() / HeapRegion.grainBytes(); } - public long oldGenCommitted() { - return oldGenCommittedField.getValue(addr); + public long oldSpaceCommitted() { + return oldSpaceCommittedField.getValue(addr); + } + + public long oldSpaceUsed() { + return oldSpaceUsedField.getValue(addr); + } + + public long oldSpaceRegionNum() { + return oldSpaceUsed() / HeapRegion.grainBytes(); + } + + public long archiveSpaceCommitted() { + return archiveSpaceCommittedField.getValue(addr); + } + + public long archiveSpaceUsed() { + return archiveSpaceUsedField.getValue(addr); + } + + public long archiveSpaceRegionNum() { + return archiveSpaceUsed() / HeapRegion.grainBytes(); + } + + public long humongousSpaceCommitted() { + return humongousSpaceCommittedField.getValue(addr); + } + + public long humongousSpaceUsed() { + return humongousSpaceUsedField.getValue(addr); } - public long oldGenUsed() { - return oldGenUsedField.getValue(addr); + public long humongousSpaceRegionNum() { + return humongousSpaceUsed() / HeapRegion.grainBytes(); } public G1MonitoringSupport(Address addr) {