Parallelizing symbol table/string table scan
coleen.phillimore at oracle.com
Mon Nov 11 08:28:21 PST 2013
On 11/11/2013 11:19 AM, Thomas Schatzl wrote:
> 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
> 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
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?
More information about the hotspot-runtime-dev