Mercurial > hg > graal-jvmci-8
changeset 15965:272b64c1d65b
do not count the memory allocated by ThreadMXBean.getThreadAllocatedBytes()
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 28 May 2014 14:07:31 +0200 |
parents | e4567f9acc42 |
children | 27ff0792b048 |
files | graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/MemUseTrackerImpl.java |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/MemUseTrackerImpl.java Wed May 28 12:17:16 2014 +0200 +++ b/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/MemUseTrackerImpl.java Wed May 28 14:07:31 2014 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.debug.internal; +import static java.lang.Thread.*; + import java.lang.management.*; import com.oracle.graal.debug.*; @@ -31,6 +33,15 @@ private static final ThreadMXBean threadMXBean = (ThreadMXBean) ManagementFactory.getThreadMXBean(); + /** + * The amount of memory allocated by {@link ThreadMXBean#getThreadAllocatedBytes(long)} itself. + */ + private static final long threadMXBeanOverhead = -getCurrentThreadAllocatedBytes() + getCurrentThreadAllocatedBytes(); + + private static long getCurrentThreadAllocatedBytes() { + return threadMXBean.getThreadAllocatedBytes(currentThread().getId()) - threadMXBeanOverhead; + } + public static final Closeable VOID_CLOSEABLE = new Closeable() { @Override @@ -84,12 +95,12 @@ private CloseableImpl() { this.parent = currentTracker.get(); - this.start = threadMXBean.getThreadAllocatedBytes(Thread.currentThread().getId()); + this.start = getCurrentThreadAllocatedBytes(); } @Override public void close() { - long end = threadMXBean.getThreadAllocatedBytes(Thread.currentThread().getId()); + long end = getCurrentThreadAllocatedBytes(); long allocated = end - start; if (parent != null) { parent.nestedAmountToSubtract += allocated;