![]() ![]() They're pretty conservative.Įdit: someone downthread linked to. But the Minecraft community isn't really known for adopting the latest JVM tech. ![]() Whilst I don't know about ZGC vs Shenandoah, the performance improvements from using Graal EE over C2 can be large even for Java (the wins are much bigger still for other higher level/more dynamic languages). So, probably it's worth trying that combination in the next six months or so. Generational ZGC should be in Java 21 but then you'd have to wait for GraalVM to catch up. Without generational GC it may not be able to keep up with those very high allocation rates, even with a better compiler reducing them down again. The main problem is going to be that ZGC Generational is not quite launched yet. ZGC is a pauseless GC like Shenandoah and the Graal compiler is a lot better at escape analysis and removing allocations than the stock C2 compiler especially now Oracle made the enterprise compiler free to use. Since a few weeks ago the most obvious thing to try is using the latest Oracle GraalVM with ZGC. Right now they're in a bit of a transitional period. Neither is wrong, and there's very likely a lot of low hanging JVM performance fruit here still to claim. Additionally, some objects have different representations in the API (what's used by plugins) vs the implementation (what's used by vanilla minecraft), so converting between those representations is another source of allocations. It might make sense for large objects, but generally requires in-depth analysis to make sure it actually helps.Īlso, when plugins come into the equation, you need to make sure that those can't modify objects they aren't meant to modify, which involves copying of objects. not creating Streams in hot paths), pooling brings far more new problems with it. ![]() So while it makes sense to avoid unnecessary allocations by using different APIs (e.g. So instead of more overhead due to pooling on the thread that uses the objects, you have more overhead on a different thread during garbage collection. And while collecting garbage takes resources too, it's heavily concurrently, especially in GCs like Shenandoah and ZGC. Allocation is typically really cheap, maintaining pools for objects would likely have more overhead. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |