问题
Just curious. I heard something about the new G1GC addressing that latency problem. I can't / don't want to use RTSJ.
Thanks in advance
回答1:
I don't think there are any zero-pause garbage collectors. But generally speaking a low-pause collector like CMS will do the job.
The problems with pauses and pause reduction are as follows:
A zero-pause (or almost zero-pause) collection regime significantly increases overheads for normal program execution. This is particularly true with multithreaded languages like Java.
Schemes that use a dedicated thread or threads to do garbage collection can get swamped if the application generates too much garbage.
Any GC scheme will give you poor performance if the application's memory usage patterns are too "lumpy" and/or you don't have enough physical and virtual memory.
回答2:
You might be interested in something like the Zing JVM.
Azul systems have put a lot of effort into low-latency JVM tuning. I believe there are also some interesting technical papers that explain how this is done.
回答3:
It sounds like you're looking for the CMS GC — concurrent mark sweep.
(source: https://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf, p.12)
December 2015 update: you might be interested in Azul's "pauseless" GC. See Explanation of Azul's "pauseless" garbage collector for more.
回答4:
You can try the latest G1 Garbage collection in JDK 7.
来源:https://stackoverflow.com/questions/9849205/is-there-a-gc-in-java-that-does-not-introduce-latency-stop-the-world-by-perhap