On Wed, 18 Jan 2023 20:06:33 GMT, Chris Plummer <[email protected]> wrote:
> Fix JDI leak when the debuggee creates a lot of threads, while at the same
> the debugger is not sending any commands. The lack of commands being sent
> results in code not being triggered that normally would clear out unreachable
> listeners and also clear out ObjectReferences queued for disposal.
src/jdk.jdi/share/classes/com/sun/tools/jdi/VMState.java line 177:
> 175: private void removeUnreachableListeners() {
> 176: boolean found = false;
> 177: while (listenersReferenceQueue.poll() != null) {
Hello Chris, I have no prior knowledge of this code, so this is just a casual
observation - should this change here be a `if` instead of a `while`? I see
that this `removeUnreachableListeners()` gets called whenever a new listener is
being added in `addListener(...)`. With the use of `while`, is this
intentionally waiting for the GC to kick in and add at least one reference
object to this queue?
-------------
PR: https://git.openjdk.org/jdk/pull/12081