On Tue, 13 May 2025 16:14:06 GMT, Joel Sikström <jsiks...@openjdk.org> wrote:

>> Hello,
>> 
>> The goal of this RFE is to separate Metaspace printing from GC printing. The 
>> main reason Metaspace and GC printing is coupled the way it is right now is 
>> because historically, the permanent generation (PermGen), which was replaced 
>> by Metaspace, was part of the GC heap. Hence, it made sense to also print 
>> info about the PermGen when printing the GC heap.
>> 
>> With Metaspace replacing the PermGen, which uses memory that is separate 
>> from the GC heap, the coupling has become more loose, raising the question 
>> if Metaspace should be printed somewhere else (maybe when printing *other* 
>> Metaspace stuff?). A reason to still print Metaspace when printing the heap 
>> is that the GC is responsible for unloading classes and nmethods, which 
>> means it makes sense to print Metaspace information in connection to when a 
>> GC is performed.
>> 
>> To better reflect the current state of the JVM, I propose we make the 
>> following changes to separate Metaspace from GC printing:
>> * Move Metaspace printing from HeapInfoDCmd to MetaspaceDCmd.
>> * Move Metaspace printing from the "Heap:" section to "Metaspace:" section 
>> in vmError.cpp (hs_err files, the VM.info jcmd and -XX:+PrintVMInfoAtExit).
>> * Use gc+exit instead of gc+heap+exit as tags for the LogTarget during exit 
>> printing to reflect that it's not only the heap being printed.
>> * And the largest change in terms of LOC, separate Metaspace and GC Heap in 
>> the periodic printing before/after GC invocation(s). The periodic printing 
>> is also recorded in a ring buffer, which is printed in vmError.cpp.
>> 
>> Testing:
>> * GHA, Oracle's tier 1-4
>> * Manuel inspection of printed content
>
> Joel Sikström has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   HeapInfoTest should check that GC.heap_info actually runs

With feedback from @stefank, I've flipped the order of Metaspace Usage and GC 
Heap Usage in hs_err files so that GC Heap Usage comes first. Example output:

GC Heap Usage History (70 events):
Event: 0,896 {heap Before GC invocations=0 (full 0):
 ZHeap           used 860M, capacity 860M, max capacity 9216M
  Cache          0M (0)
}
...

Metaspace Usage History (70 events):
Event: 0,896 {metaspace Before GC invocations=0 (full 0):
 Metaspace       used 18663K, committed 19008K, reserved 1114112K
  class space    used 1601K, committed 1728K, reserved 1048576K
}
...

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

PR Comment: https://git.openjdk.org/jdk/pull/25214#issuecomment-2882994637

Reply via email to