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

Reply via email to