2 ms·
I think we should be careful when correlating heap size with how long the collection should take. Also, I really want ZGC in .NET runtime, but I don't think I'
by bob1029 2y ago
I think we should be careful when correlating heap size with how long the collection should take.
Also, I really want ZGC in .NET runtime, but I don't think I'll ever get support for it first party. There's some kind of principled ideologue holdout situation going on over at Microsoft. Every time I get into it with one of their engineers I'm sent to some impotent "please may I have a temporary GC exemption" API. All I want is it to do nothing. How hard is it to just not clean up the goddamn garbage? Give me a registry flag + env variable + cli arg all required at the same time if you're so worried someone might trip over it.
- reubenbond 2y agoWould GC.TryStartNoGCRegion work for you? https://learn.microsoft.com/en-us/dotnet/api/system.gc.trystartnogcregion?view=net-8.0#system-gc-trystartnogcregion(system-int64-system-boolean) https://learn.microsoft.com/en-us/dotnet/api/system.gc.tryst...
- neonsunset 2y agoZGC does not stand for zero. It stands for Z Garbage Collector. It's a next-generation GC implementation for OpenJDK that focuses on low pause time while supporting very large heap sizes. It does not "not collect garbage". You could try using https://github.com/kkokosa/UpsilonGC https://github.com/kkokosa/UpsilonGC and seeing if it still works. At the end of the day for anything performance-related you can just write code with manual memory management with RAII patterns via IDisposable on structs and get code that performs closely to C++ or Rust. It's also necessary to understand if this is a good idea at all - most of the time you do want to just rely on GC.
- bob1029 2y ago> ZGC does not stand for zero. It stands for Z Garbage Collector. Apologies - I was attempting to referring to "absolutely no" garbage collection path. I was thinking of Epsilon [0]. > It's also necessary to understand if this is a good idea at all - most of the time you do want to just rely on GC. Assume we are building a cruise missile flight computer. I have enough ram for ~100 hours of flight if we never clean up any allocations. I only have enough fuel for 8 hours of flight on a good day. Why do I still need a garbage collector? All I need is a garbage generator. The terminal ballistics and warhead are the "out of band" aspects in this arrangement. > You could try using https://github.com/kkokosa/UpsilonGC https://github.com/kkokosa/UpsilonGC and seeing if it still works. I've spent weeks on this exact thing. I cannot get it to work. This gets me back to the first party support aspect. [0] https://openjdk.org/jeps/318 https://openjdk.org/jeps/318