![]() ![]() 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. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |