> 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

Reply via email to