accumulo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Vines (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-599) investigate permgen collection and class unloading with concurrent mark and sweep garbage collector
Date Tue, 22 May 2012 18:37:40 GMT


John Vines commented on ACCUMULO-599:

Reading through
and some flags which catch my eye-
-XX:MaxGCPauseMillis=n - Sets a target for the maximum GC pause time. This is a soft goal,
and the JVM will make its best effort to achieve it. - May be worthwhile to encourage the
GC to limit it's GC rounds to 15-20 seconds top to prevent stops?
-XX:+UseLargePages - Use large page memory. (Introduced in 5.0 update 5.) For details, see
Java Support for Large Memory Pages. - Not sure if this would be worthwhile or not. But seems
-XX:+UseTLAB - Uses thread-local object allocation blocks. This improves concurrency by reducing
contention on the shared heap lock. - May be worthwhile with the amount of multithreading
we do, at least in the tservers (and possibly clients, though we don't typically do object
creation within them)
-XX:MaxTenuringThreshold=0 - Makes the full NewSize available to every NewGC cycle, and reduces
the pause time by not evaluating tenured objects. Technically, this setting promotes all live
objects to the older generation, rather than copying them - This would allow objects to only
be handled by the concurrent mark and sweet collector. Unfortunately, if our assumption about
old-stop-the-world GC kicking off if the CMS can't keep up, then this will only amplify it's

Part of me says we should try some out, but part of me says we should only fix that which
we find to be broken. I think if no one has anything to say, we should only do the suggested
class unloading and perm gen sweeping.

> investigate permgen collection and class unloading with concurrent mark and sweep garbage
> ---------------------------------------------------------------------------------------------------
>                 Key: ACCUMULO-599
>                 URL:
>             Project: Accumulo
>          Issue Type: Bug
>          Components: scripts
>    Affects Versions: 1.3.6, 1.4.0
>            Reporter: Adam Fuchs
>            Assignee: John Vines
> The Java concurrent mark and sweep garbage collector appears to default to not unloading
classes or sweeping the permgen storage space. Accumulo reloads classes dynamically, potentially
contributing a lot to the permgen space. It is important that these classes be garbage collected
when we're done with them. Since we use -XX:+UseConcMarkSweepGC by default for all Accumulo
processes, should we also use -XX:+CMSClassUnloadingEnabled and -XX:+CMSPermGenSweepingEnabled?
Are there other flags or parameters that we should set to really do java garbage collection
properly in a long-lived instance?
> These should be set in conf/ as part of ACCUMULO_GENERAL_OPTS.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message