On Tue, 8 Dec 2020 14:04:33 GMT, Per Liden <pli...@openjdk.org> wrote:
>> I read "reachable for the purposes of garbage collection" as not including >> objects reachable only via weak reference. So if the only reference to an >> object is a weak reference, which is normally what you have after calling >> `ClassType.newInstance()`, then the object is not considered reachable. At >> the very least, his is how `ReferenceType.instances()` is implemented, and >> is based on JVMTI >> [FollowReferences](https://docs.oracle.com/en/java/javase/14/docs/specs/jvmti.html#FollowReferences)(). >> >> So given that, the expectation would be that an object returned >> `ClassType.newInstance()` would not be counted by >> `ReferenceType.instances()` unless something is done to add a strong >> reference to the object, such as calling >> `ObjectReference.disableCollection()`. Now with Per's changes a strong >> reference is also created with doing a VM.suspend(). The test doesn't expect >> this behavior, and it's understandable why. > > I think we're still within what the spec says, given that the wording is so > loose. But it's hard to tell if this change will be problematic for some use > case. I'm ok with making the change and then seeing if there is any fallout from it. My guess is there won't be. I do think there is a need to cleanup the JDI and JDWP specs in a few areas w.r.t. object liveness. Another CR can be filed for that. ------------- PR: https://git.openjdk.java.net/jdk/pull/1595