Skip to content

Commit e6a0104

Browse files
Cache MemoryMXBean in Management
1 parent d9609a1 commit e6a0104

File tree

1 file changed

+13
-3
lines changed
  • espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/vm

1 file changed

+13
-3
lines changed

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/vm/Management.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ public final class Management extends NativeEnv {
162162
@CompilationFinal //
163163
private int managementVersion;
164164

165+
private MemoryMXBean memoryMXBean;
166+
165167
private final @Pointer TruffleObject initializeManagementContext;
166168
private final @Pointer TruffleObject disposeManagementContext;
167169

@@ -180,6 +182,14 @@ protected TruffleLogger getLogger() {
180182
return LOGGER;
181183
}
182184

185+
@TruffleBoundary
186+
private MemoryMXBean getHostMemoryMXBean() {
187+
if (memoryMXBean == null) {
188+
memoryMXBean = ManagementFactory.getMemoryMXBean();
189+
}
190+
return memoryMXBean;
191+
}
192+
183193
/**
184194
* Procedure to support a new management version in Espresso:
185195
* <ul>
@@ -611,11 +621,11 @@ private StaticObject asGuestUsage(MemoryUsage usage, Meta meta) {
611621
@TruffleBoundary
612622
public @JavaType(Object.class) StaticObject GetMemoryUsage(@SuppressWarnings("unused") boolean heap, @Inject Meta meta) {
613623
MemoryUsage usage;
614-
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
624+
MemoryMXBean hostBean = getHostMemoryMXBean();
615625
if (heap) {
616-
usage = memoryMXBean.getHeapMemoryUsage();
626+
usage = hostBean.getHeapMemoryUsage();
617627
} else {
618-
usage = memoryMXBean.getNonHeapMemoryUsage();
628+
usage = hostBean.getNonHeapMemoryUsage();
619629
}
620630
return asGuestUsage(usage, meta);
621631
}

0 commit comments

Comments
 (0)