> It seems the consensus is that the slow responsiveness of Java apps is
> mostly due to an issue with Swing and how it is used rather than with
> garbage collection. That sounds very encouraging.
Determining whether the GC is responsible is pretty easy. Just runt
with -verbose:gc (or -XX:+PrintGC) and watch the pauses.
Unless your application has a very big heap I highly doubt GC is the problem.
Whenever it is, you also have several options. The default GC
selection in Sun's JVM is basically not at all catered to low-latency,
instead focusing on throughput.
Sun's JVM has the CMS collector which is targetted at limiting pauses
with large heaps, and there is the upcoming G1GC collector. Non-Sun
JVM:s have their own GC:s.
In general, when people make off-hand remarks blaming the GC for
random things, they are usually wrong and do not know what they are
talking about. Until someone shows they have specifically identified
the GC, I would take it with a grain of salt.
If you do have GC problems you can select things other than the
default collector. A potentially good starting point for CMS is:
-XX:+UseConcMarkSweepGC \
-XX:+CMSIncrementalMode \
-XX:+CMSIncrementalPacing \
-XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps \
-XX:+DisableExplicitGC \
-XX:+CMSParallelRemarkEnabled \
-XX:+TraceClassUnloading
And for G1GC:
-XX:+UnlockExperimentalVMOptions \
-XX:+UseG1GC \
-XX:+DisableExplicitGC \
-XX:MaxGCPauseMillis=10 \
-XX:GCPauseIntervalMillis=20 \
-XX:+G1ParallelRSetUpdatingEnabled \
-XX:+G1ParallelRSetScanningEnabled \
Often you will also get better behavior by using appropriate -Xms/-Xmx
options. The above are just examples of course and not "the" way to do
it or anything.
The -XX:+DisableExplicitGC is because some software authors try to be
"smart" and insert System.gc() calls at "appropriate" points. They
tend to fail, so if you select a GC that actually does handle your
case with minimal pauses you also want to disable the artificially
induced full GC:s.
--
/ Peter Schuller
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en