> This is first of what will probably be 3 PRs to improve virtual thread > ThreadNode handling in the debug agent, with a goal of improving performance > and reducing footprint. > > This PR focuses on purging virtual thread ThreadNodes in two places: > > 1. Freeing the ThreadNode after handling a THREAD_START event for a virtual > thread. > 2. Doing a "GC" of virtual thread ThreadNodes just before doing a "suspend > all" > > At some point in the future I want to attempt to free the ThreadNodes after > performing ThreadReference related commands, which will result in the > creation of a ThreadNode if not already created. Another area is in > handleReportEventCompositeCommand() when the thread is not null and we are > using the SUSPEND_NONE policy. This will get more ThreadNodes freed > immediately after handling an event. > > Part of the challenge with this PR is that there are many places in the debug > agent that expect a ThreadNode to already have been created for the virtual > thread, but now it is common that they have not. The main way this has been > addressed is by having findRunningThread() create the ThreadNode if it does > not already exist. > > At some point in the future I will probably add logic to only "GC" > ThreadNodes after the number reaches some threshold, but right now I want to > free them very aggressively so we'll catch any bugs where there debug agent > expects a ThreadNode to exist, but possibly now it might not. > > Tested by running all tier2, tier5, and tier6 CI svc tests.
Chris Plummer has updated the pull request incrementally with one additional commit since the last revision: comment typo ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28211/files - new: https://git.openjdk.org/jdk/pull/28211/files/717f9d70..49a358c5 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28211&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28211&range=00-01 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28211.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28211/head:pull/28211 PR: https://git.openjdk.org/jdk/pull/28211
