RFR: 8297427: Avoid keeping class loaders alive when executing ClassLoaderStatsVMOperation [v2]
Stefan Johansson
sjohanss at openjdk.org
Wed Nov 30 09:08:52 UTC 2022
> Please review this change to avoid keeping classes alive only due to the `ClassLoaderStatsVMOperation`.
>
> **Summary**
> The `ClassLoaderStatsVMOperation` is gathering statistics about the active class loaders in a safepoint. The way the `ClassLoaderDataGraph` is iterated will keep the class loaders live. This is not really needed since everything is done in a safepoint and nothing needs to be explicitly kept alive. This has not been a problem prior to concurrent class unloading in ZGC. With fully concurrent class unloading a `ClassLoaderStatsVMOperation` can occur during a collection and more classes than needed might be kept alive. This could in turn lead to premature Metaspace OOM.
>
> The solution is to not keep the class loaders alive due to the iteration in `ClassLoaderStatsVMOperation`.
>
> **Testing**
> * Added a new test that covers the two different ways a class could previously be kept alive by the VM operation. The test passes after the fix but failed before.
> * Mach5 tier 1-3
Stefan Johansson has updated the pull request incrementally with three additional commits since the last revision:
- Print object to ensure it is kept alive
- Revert "Axel comments to use templates"
This reverts commit 8800ef089b62cf173147b68adb2ee993b7e72980.
- Revert "Missing include for minimal"
This reverts commit 424e0f9d831279ba2d1986ebacb499f8d4a6c078.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/11300/files
- new: https://git.openjdk.org/jdk/pull/11300/files/424e0f9d..f6dba7f2
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=11300&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=11300&range=00-01
Stats: 157 lines in 15 files changed: 72 ins; 69 del; 16 mod
Patch: https://git.openjdk.org/jdk/pull/11300.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/11300/head:pull/11300
PR: https://git.openjdk.org/jdk/pull/11300
More information about the hotspot-dev
mailing list