Parallelizing symbol table/string table scan

Coleen Phillimore coleen.phillimore at
Mon Nov 11 08:28:21 PST 2013

On 11/11/2013 11:19 AM, Thomas Schatzl wrote:
> Hi,
> On Mon, 2013-11-11 at 10:53 -0500, Coleen Phillimore wrote:
>> On 11/11/2013 08:56 AM, Thomas Schatzl wrote:
>>> Hi all,
>>>     recently we (the gc team) noticed severe performance issues with
>>> symbol table and string table scan during remark.
>>> Basically, in G1 these pauses are the largest pauses on a reasonably
>>> tuned system. Also, in particular, symbol table scan alone takes 50% of
>>> total remark time. String table scan takes another 13%.
>> Why do you scan the symbol table during remark?   It doesn't contain any
>> oops.
> At the end of remark we scrub it for entries with zero refcount - we do
> that at the end of every non-young GCs at the moment.

Ok, so it's only non-young collections.  That's what I thought.
> I *think* the reasoning was that particularly after class unloading
> there will be freed symbols, so why not do the symbol scrubbing there as
> well. I also *think* that this has been placed there mostly for
> convenience (good opportunity since the application is in a STW pause
> already).

I'll read and reply to the rest of your message, but you are right, 
_most_ of the symbols are going to be unreferenced during class 
unloading.   And it has to be during a safepoint (stop the world).
Are there symbol table walks that aren't after class unloading?

> Thomas

More information about the hotspot-runtime-dev mailing list