> This can be made a bit better by turning Escape Analysis on? Have you
> tried that?
>
> The G1 collector is supposed to have lower latency. Have you tried it?
>
> http://research.sun.com/jtech/pubs/04-g1-paper-ismm.pdf

(GC choice/tuning is a loooong story, but some select suggestions follow)

First off, make sure you're at least using CMS
(-XX:+UseConcMarkSweepGC) or G1 at all to begin with - the default
collector is the throughput collector which will always do full GC:s
of the old generation so that you are guaranteed to get pause times
that scale linearly with heap size (unless you're generating *zero*
non-young garbage).

With CMS, you can force shorter young generation pauses by limiting
the size of the young generation (usually at the cost of more GC work
in total; i.e., less throughput, because the older generation is more
expensive to collect). I'm not sure at all how much control over VM
options you have with Java WebStart though, but in general that would
be my suggestion if the young generation pauses are too long.
-XX:NewSize=SIZE and -XX:MaxNewSize=SIZE should be your friend here
(and -XX:+UseParNewGC though I think that is always the default on
modern VM:s anyway on multi-core machines). I'm making the assumption
here that the allocation pattern is not such that the concurrent
mark/sweep:s are the problem.

With G1, you can directly specify target pause times that G1 tends to
be pretty good at maintaining in my experience. A recurring issue for
me and at least some others seems to be that your application may have
a workload that disallows certain memory regions to be collected
within the pause time goal; this can lead to a build-up of
uncollectable regions that may eventually cause a fallback to a full
stop-the-world GC. The likelyhood of this happening is higher the
lower the pause time goal you specify. An starter command line to play
with (preferably with jdk 1.7) might be:

  -XX:+UnlockExperimentalVMOptions  -XX:+UseG1GC
-XX:MaxGCPauseMillis=15 -XX:GCPauseIntervalMillis=20

-- 
/ Peter Schuller

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to