RFR: 8301403: Eliminate memory allocations during signal handling

David Holmes dholmes at openjdk.org
Wed Jul 17 03:34:50 UTC 2024


On Tue, 16 Jul 2024 20:44:00 GMT, Gerard Ziemski <gziemski at openjdk.org> wrote:

> Allocating memory while handling an error should be avoided, however `JVMFlag::printFlags()` is used by crash log and it allocates memory to print flags sorted (using qsort).
> 
> We avoid memory allocation by using a simple in place algorithm that uses JVMFlag 1 bit of unused data from its private `Flags` enum data member. It is O(n^2) algorithm, compared to O(n*log(n)) for qsort, however, it's called while handling an error log, so the speed here is not paramount. Also, I measured the real impact on a simple test case and I actually observed performance improvement of about x2.5 faster (2,885,973ns in place ordered printing vs 7,389,456ns for qsort). This is because we ended up having to qsort all flags when only a fraction of them actually end up being printed.
> 
> Running MACH5 tests...

May I suggest changing the JBS and PR title to

> Eliminate memory allocations in JVMFlag::printFlags during signal handling

to make it clear what the scope of this change is. Thanks.

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

PR Comment: https://git.openjdk.org/jdk/pull/20202#issuecomment-2232302225


More information about the hotspot-runtime-dev mailing list