RFR: 8256811: Delayed/missed jdwp class unloading events [v3]
Serguei Spitsyn
sspitsyn at openjdk.org
Sat Jun 25 01:41:02 UTC 2022
On Fri, 24 Jun 2022 04:20:45 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:
>> Zhengyu Gu has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 18 additional commits since the last revision:
>>
>> - Improve naming and cleanup
>> - Merge branch 'master' into JDK-8256811-jdi-missing-class-unloading-event
>> - v4
>> - v3
>> - v2
>> - Merge branch 'master' into JDK-8256811-jdi-missing-class-unloading-event
>> - Merge branch 'jdi_tmp' into JDK-8256811-jdi-missing-class-unloading-event
>> - v0
>> - v2
>> - v1
>> - ... and 8 more: https://git.openjdk.org/jdk/compare/fae7ca88...559b4bf1
>
> src/hotspot/share/prims/jvmtiExport.cpp line 1702:
>
>> 1700: } else {
>> 1701: post_object_free_on_java_thread(env, objects);
>> 1702: }
>
> Can you explain why sometimes it is a VMThread and why sometimes it is a JavaThread?
I hope, it is okay if I explain it. :)
The `post_object_free` can be called in different contexts.
It is (recursively) called from `JvmtiTagMap::check_hashmaps_for_heapwalk()` which is used in VM_ops:
- VM_HeapIterateOperation
- VM_HeapWalkOperation
Also, the `post_object_free` is called from `JvmtiTagMap` functions:
- flush_object_free_events
- get_objects_with_tags
which can be called from the `ServiceThread` or the JVMTI functions like `SetEvenNotificationMode`, `SetEventCallBacks` or `GetObjectsWithTags`.
-------------
PR: https://git.openjdk.org/jdk/pull/9168
More information about the serviceability-dev
mailing list