> Currently, jdi only check and process class unloading event when it detects a > new GC cycle. > > After [JDK-8212879](https://bugs.openjdk.org/browse/JDK-8212879), posting > class events can overlap with GC finish event, that results, sometimes, it > only captures partial or even empty unloaded class list. The pending list > usually can be flushed out at next GC cycle. But for the classes unloaded > during the last GC cycle, the class unloading events may lost forever. > > This patch checks and processes class unloading events unconditionally, > suggested by @kbarrett, the last pending unloaded class list can be flushed > by other events, such as `VM_DEATH`. > > It also performs `commonRef_compact()` only when there are classes unloaded. > > New test failed about 20% without patch, none with patch.
Zhengyu Gu 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 18 additional commits since the last revision: - Improve naming and cleanup - Merge branch 'master' into JDK-8256811-jdi-missing-class-unloading-event - v4 - v3 - v2 - Merge branch 'master' into JDK-8256811-jdi-missing-class-unloading-event - Merge branch 'jdi_tmp' into JDK-8256811-jdi-missing-class-unloading-event - v0 - v2 - v1 - ... and 8 more: https://git.openjdk.org/jdk/compare/1bded2dc...559b4bf1 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/9168/files - new: https://git.openjdk.org/jdk/pull/9168/files/89da788e..559b4bf1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=9168&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=9168&range=01-02 Stats: 12263 lines in 93 files changed: 577 ins; 2400 del; 9286 mod Patch: https://git.openjdk.org/jdk/pull/9168.diff Fetch: git fetch https://git.openjdk.org/jdk pull/9168/head:pull/9168 PR: https://git.openjdk.org/jdk/pull/9168