RFR: 8212879: Make JVMTI TagMap table concurrent [v4]
Erik Österlund
eosterlund at openjdk.java.net
Thu Nov 5 14:22:01 UTC 2020
On Tue, 3 Nov 2020 21:14:04 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
>> src/hotspot/share/prims/jvmtiTagMap.cpp line 3018:
>>
>>> 3016: }
>>> 3017: // Later GC code will relocate the oops, so defer rehashing until then.
>>> 3018: tag_map->_needs_rehashing = true;
>>
>> This is wrong for some collectors. I think all collectors ought to be calling set_needs_rehashing in appropriate places, and it can't be be correctly piggybacked on the num-dead callback. (See discussion above for that function.)
>>
>> For example, G1 remark pause does weak processing (including weak oopstorage) and will call the num-dead callback, but does not move objects, so does not require tagmap rehashing.
>>
>> (I think CMS oldgen remark may have been similar, for what that's worth.)
>
> Ok, so I'm going to need help to know where in all the different GCs to make this call. This seemed simpler at the expense of maybe causing a rehash at some points when it might not be necessary.
For what GC is this wrong? I can see that it might yield more work than required, when performing a full GC, but not that it would do too little work. In other words, I can't see how it is wrong, as opposed to inaccurate. Littering GCs with JVMTI hooks so that we can optimize away an operation we do every young GC, from a full GC, does not really seem worth it IMO.
-------------
PR: https://git.openjdk.java.net/jdk/pull/967
More information about the build-dev
mailing list