RFR(L): 8195097: Make it possible to process StringTable outside safepoint
coleen.phillimore at oracle.com
coleen.phillimore at oracle.com
Tue May 29 21:52:34 UTC 2018
Hi Robbin,
StringTable::weak_oops_do() functions seem unused.
Can you make StringTableDeleteCheck and StringTableDoDelete inherited
from StackObj for documentation purposes, and others in this file.
I've reviewed this code at intervals in progress, so I think this looks
good. Reviewed by me.
thanks,
Coleen
On 5/28/18 9:19 AM, Robbin Ehn wrote:
> Hi all, please review.
>
> This implements the StringTable with the ConcurrentHashtable for
> managing the
> strings using oopStorage for backing the actual oops via WeakHandles.
>
> The unlinking and freeing of hashtable nodes is moved outside the
> safepoint,
> which means GC only needs to walk the oopStorage, either concurrently
> or in a
> safepoint. Walking oopStorage is also faster so there is a good effect
> on all
> safepoints visiting the oops.
>
> The unlinking and freeing happens during inserts when dead weak oops are
> encountered in that bucket. In any normal workload the stringtable
> self-cleans
> without needing any additional cleaning. Cleaning/unlinking can also
> be done
> concurrently via the ServiceThread, it is started when we have a high
> ‘dead
> factor’. E.g. application have a lot of interned string removes the
> references
> and never interns again. The ServiceThread also concurrently grows the
> table if
> ‘load factor’ is high. Both the cleaning and growing take care to not
> prolonging
> time to safepoint, at the cost of some speed.
>
> Kitchensink24h, multiple tier1-5 with no issue that I can relate to this
> changeset, various benchmark such as JMH, specJBB2015.
>
> Issue: https://bugs.openjdk.java.net/browse/JDK-8195097
> Webrev: http://cr.openjdk.java.net/~rehn/8195097/v0/webrev/
>
> Thanks, Robbin
More information about the hotspot-runtime-dev
mailing list