RFR(L): 8198691: CodeHeap State Analytics

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Mar 20 00:21:39 UTC 2018

Hi Lutz,

Looks good.

You left commented code in heap.hpp not related to UL. And in codeCache.cpp and java.cpp for log stream.

Personally I agree to avoid UL prefix (it takes half of line on terminal). UL should allow to 
specify if you want it or not in your output.


On 3/19/18 9:00 AM, Schmidt, Lutz wrote:
> Dear all,
> this is the next (second) iteration of my CodeHeap State Analytics effort. It reflects all the comments and suggestions I received on my initial RFR (sent out on March 1st). Please read on to learn what was changed and what kept as is.
> May I please request reviews for
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8198691
> Webrev: http://cr.openjdk.java.net/~lucy/webrevs/8198691.01/
> Instead of keeping the long tail of comments and responses, I decided to provide a summary of what happened.
>   - Most of the new code was moved to new files: share/code/codeHeapState.cpp and share/code/codeHeapState.hpp
>   - I have added, as requested, an abbreviated version of the "General Description" chapter to codeHeapState.cpp
>   - In case of SegmentedCodeCache, the iteration is limited to FOR_ALL_ALLOCABLE_HEAPS(). There were issues in aot tests when using FOR_ALL_HEAPS().
>   - All references to the RFE id should be gone.
>   - In share/runtime/java.cpp, the call to CompileBroker::print_heapinfo() now is close to "PrintCodeCache" for both, product and nonproduct cases.
>   - The edited/updated documentation is available as an attachment to the bug (in PDF format).
>   - I added code to share/code/codeCache.cpp (report_codemem_full()) to print the CodeHeap state for the first occurrence of the "full" condition.
>   - The code style "hickups", noted by Tobias Hartmann, are gone.
>   - The compile time warnings and errors are resolved.
> -XX:+PrintCodeHeapState vs. -Xlog:codecache=Trace
> I clearly understand and support the intention to get rid of the Print* command line arguments. Therefore, the PrintCodeHeapState command line argument is gone. You can request the CodeHeap state analytics with the -Xlog:codecache=Trace (vm shutdown) or -Xlog:codecache=Debug (CodeCache full and vm shutdown) switches. The output is directed to tty, not to the log stream.
> The reason for not using the log stream is simple: UL prefixes every line with a timestamp and the trace tags. Unfortunately, that messes up my formatting big time. The jcmd output, on the other hand, will not have the UL prefixes. I would have to distinguish between UL and jcmd output when formatting. In addition, I do not see a benefit from adding the same UL prefix to thousands of lines.
> Comments are very welcome!
> Best Regards,
> Lutz

More information about the hotspot-compiler-dev mailing list