RFR: 8287135: Calculation of jmm_GetMemoryUsage is wrong
David Holmes
dholmes at openjdk.java.net
Thu May 26 12:51:36 UTC 2022
On Thu, 26 May 2022 11:32:46 GMT, Yi Yang <yyang at openjdk.org> wrote:
>> I think the problem is the definition of the pools. We seem to have nested pools but it is far from clear that this API/mechanism was designed/intended to support nested pools.
>
> In any case, it's unreasonable for getNonHeapMemoryUsage to count a piece of memory repeatedly, right? In the extreme case, we might add all nested pools of metaspace, and we will get Metaspace x2 + CodeCache when using getNonHeapMemoryUsage, which should be far beyond what developers expect. In a real scenario, some monitor platforms draw a line chart by collecting getHeapMemoryUsage and getNonHeapMemoryUsage. It's confusing for end-users of the monitor platform to understand why getHeapMemoryUsage is desired while getNonHeapMemoryUsage is bigger than expectation.
>
> From the developer's point of view, MemoryMXBean.getNonHeapMemoryUsage is expected to obtain the size of non-heap area. Given that MemoryMXBean.getHeapMemoryUsage is clearly stated which is heap area:
>
> * Returns the current memory usage of the heap that
> * is used for object allocation. The heap consists
> * of one or more memory pools.
>
>
> I propose to revise the Java doc to describe the definition of non-heap area more precisely:
>
> /**
> * Returns the current memory usage of non-heap memory that
> * contains code cache and metaspace.
> * The non-heap memory consists of one or more memory pools.
No, things like code-cache and metaspace do not get baked into the specification. "non-heap" is deliberately vague and open-ended.
I can agree the calculation may be wrong but we need to determine exactly why it is wrong. To me the pool definitions seem wrong - they shouldn't be nested, so then you couldn't double-count. But we really need the experts on this code to chime in.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8831
More information about the serviceability-dev
mailing list