RFR: 8308762: Metaspace leak with Instrumentation.retransform [v7]
Jean-Philippe Bempel
jpbempel at openjdk.org
Wed Sep 20 16:13:50 UTC 2023
> Fix a small leak in constant pool merging during retransformation of a class. If this class has a catch block with `Throwable`, the class `Throwable` is pre-resolved in the constant pool, while all the other classes are in a unresolved state. So the constant pool merging process was considering the entry with pre-resolved class as different compared to the destination and create a new entry. We now try to consider it as equal specially for Methodref/Fieldref.
Jean-Philippe Bempel has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
- Merge branch 'openjdk:master' into 8308762
- remove trailing whitespace
- remove now useless comment
- Rewrite unit test
unresolved t2 too, cleanup JVM_CONSTANT_Class useless case
- Revert resolved class to unresolved for comparison
remove is_unresolved_class_mismatch
- add jtreg test for leak
- 8308762: Metaspace leak with Instrumentation.retransform
Fix a small leak in constant pool merging during retransformation of
a class. If this class has a catch block with Throwable, the class
Throwable is pre-resolved in the constant pool, while all the other
classes are in a unresolved state. So the constant pool merging
process was considering the entry with pre-resolved class as different
compared to the destination and create a new entry. We now try to
consider it as equal specially for Methodref/Fieldref.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/14780/files
- new: https://git.openjdk.org/jdk/pull/14780/files/26cb41b7..16bc7fad
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=14780&range=06
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=14780&range=05-06
Stats: 301167 lines in 6336 files changed: 127258 ins; 113513 del; 60396 mod
Patch: https://git.openjdk.org/jdk/pull/14780.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/14780/head:pull/14780
PR: https://git.openjdk.org/jdk/pull/14780
More information about the serviceability-dev
mailing list