On Mon, 23 May 2022 09:58:46 GMT, David Holmes <dhol...@openjdk.org> wrote:

> Sorry but I can't agree with this change as presented. By definition the 
> total non-heap memory is the sum of all pools which identify as non-heap as 
> per the specification:
> 
> "The non-heap memory consists of one or more memory pools. The used and 
> committed size of the returned memory usage is the sum of those values of all 
> non-heap memory pools ..."
> 
> so the existing code that sums the non-heap pools is correct. If you think 
> `CompressedClassSpace` should not be counted then you need to argue for it to 
> not be "non-heap".
> 
> Cheers, David

Hi David,

As far as APIs go, nobody wants to count ClassTypeSpace 
twice(`NonHeapUsage=CodeCache+Metaspace(ClassTypeSpace+NonClassTypeSpace)+CompressedClassSpace(ClassTypeSpace)`)
 when using getNonHeapMemoryUsage. The documentation should be there to explain 
the API more clearly, rather than guiding how to implement the API. Digging 
into commit history, I found only CodeHeap was presented as NonHeap pool 
[originally](https://github.com/kelthuzadx/jdk/blob/ca3a1be3fe174f6e406a0f5f61a77d3d8d4ec4d7/hotspot/src/share/vm/services/memoryPool.cpp)

But yes, there is a slightly conflict between API doc and internal 
implementation. I think there are some possible changes:
1. Tweak API documentation and adopt patch. Clearly document on what NonHeap 
really is. e.g. it consists of CodeCache + Metaspace.
2. Remove CompressedClassSpacePool. As there is no explicit use for it.

Or some other candidates? Looking forward to your suggesstions.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8831

Reply via email to