On Thu, 20 Nov 2025 20:12:11 GMT, Chris Plummer <[email protected]> wrote:
>> 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: > > improve comment Still looks good. Thank you for updating comments. ------------- Marked as reviewed by sspitsyn (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28211#pullrequestreview-3490477704
