RFR 8247808: Move JVMTI strong oops to OopStorage
coleen.phillimore at oracle.com
coleen.phillimore at oracle.com
Thu Jun 18 01:09:33 UTC 2020
On 6/17/20 7:49 PM, David Holmes wrote:
> Hi Coleen,
>
> On 18/06/2020 7:25 am, coleen.phillimore at oracle.com wrote:
>> Summary: Remove JVMTI oops_do calls from JVMTI and GCs
>>
>> Tested with tier1-3, also built shenandoah to verify shenandoah changes.
>>
>> open webrev at
>> http://cr.openjdk.java.net/~coleenp/2020/8247808.01/webrev
>> bug link https://bugs.openjdk.java.net/browse/JDK-8247808
>
> This is a nice cleanup and simplification of the code for working with
> OopStorage! So LGTM.
Thanks, David.
>
> One query ... I'm assuming that the processing previously done in
> JvmtiExport::oops_do is now done by
> OopStorageSet::vm_global()->oops_do. In most cases I can see the call
> to OopStorageSet::vm_global()->oops_do in the same vicinity as the
> call to JvmtiExport::oops_do, but not all i.e. ZRootsIterator::oops_do
> and ShenandoahSerialRoots::oops_do. Tracking through it seems that for
> those GCs the VM global roots are processed concurrently, whereas
> currently JVMTI roots are not. Does that make any potential difference?
ZGC and Shenandoah are better because when the vm_global() roots grow,
they'll be processed faster. Because accessing oops in OopStorage uses
resolve() which uses the Access API, any oops will be marked or fixed
when accessed if the GC hasn't yet gotten to this oop in it's concurrent
processing.
Kim noticed that G1 and ParallelGC should be processing these roots in
parallel (with many threads, since OopStorage has that support) and he's
going to or has filed a bug to fix it. As we add more things to
OopStorage (see upcoming RFRs), this will become important.
Thanks,
Coleen
>
> Thanks,
> David
> -----
>
>> Thanks,
>> Coleen
More information about the serviceability-dev
mailing list