![]() ![]() This technique has been used by all JVM collectors with, until recently, the exception of Shenandoah and ZGC. ![]() Separating garbage collection across multiple (typically only two) generations reduces the amount of work done during each collection cycle. If none of these options appeal, you now have another: a young generation for Shenandoah. Or, you can give it more memory to make sure application threads do not fill the heap before it finishes. You can give it a head start by adjusting heuristics so it runs more aggressively, though again, that costs throughput. You can give it more threads (-XX:ConcGCThreads), though doing so will reduce application throughput by devoting more machine resources to GC. There are a few ways to help Shenandoah win the race. Shenandoah tries to avoid losing the race, but if it does, all application threads are paused until it finishes. Shenandoah achieves p99 pause times under 10ms by collecting unused memory while application threads are running, racing them to reclaim memory before they exhaust it. Shenandoah is a mostly concurrent garbage collector developed at Red Hat and originally released in OpenJDK 12. ![]() We are working on generalizing these benefits to a broader set of workloads, and eventually to 32-bit x86 and ARM architectures.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |