@icedquinn Not sure I agree. The whole point of the GC not being explicit is to reduce human error, and it does a good job at that. Java performance compared to many other interpreted languages is exceptional (not so much .net).
You also do have the ability to "suggest" the invocation of garbage collection should you need to add some explicit control to speed things up. but it rarely makes much of a difference.
> they stop the world without telling the process
No not really. The GC doesnt freeze your program, it is smart enough to work within the idle time most of the time. You'd be hard pressed to get the GC to glitch your program or slow things down compared to manually doing it. If you do it manually and do a really good job in almost all situations I you will likely get improvements so minimal you could barely measure it.
@icedquinn If you are worried about momentary latency at moments when latency is super critical then use the Java Real-time specification, JSR1
I have heard that claim many times... every single time when I investigated it wasnt true and came down to user error (or a lack of understanding in the mechanics of the GC)... Probably 200 times in my career as the guy consultant people call in to fix other peoples mess.
Pbviously in your case I cant say much more without seeing the code or knowing more of the problem... but not once has the GC ever actually turned out to be the problem in the end.
Yea absolutely, the inefficient usage of memory in terms of spaces is entirely legit. In fact thats part of the reason its so fast, because it pre-slates the memory too (meaning it uses the memory regardless of if you use it or not)... but also object storage can be more expensive since it wont clean up right away...
The age old tradeoff of more space being consumed for the advantage of faster speed.
I mean, if you need a space-effecient GC there are quite a few options. Of course the issue with Python is the GIL, less of an issue in C-Python though.