On Thu, 26 May 2022 05:59:30 GMT, Yi Yang <yy...@openjdk.org> wrote: >> src/hotspot/share/services/management.cpp line 753: >> >>> 751: for (int i = 0; i < MemoryService::num_memory_pools(); i++) { >>> 752: MemoryPool* pool = MemoryService::get_memory_pool(i); >>> 753: if (pool->is_codeheap() || pool->is_metaspace()) { >> >> Our only special case is that all the memory reported by >> `CompressedKlassSpacePool` are already reported by `MetaspacePool`, so >> shouldn't we do this: >> >> >> if (pool->is_non_heap() && !pool->is_compressed_klass_space()) { >> // skip CompressedKlassSpacePool since its memory is already reported by >> // MetaspacePool > > This is also acceptable, but if we add more memory pools, we might add more > special pools to exclude their space from nonheap. Instead, we can specify > exactly which pools we need to accumulate, which is what this change did.
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. ------------- PR: https://git.openjdk.java.net/jdk/pull/8831