3 ms·
That sounds a lot like the complaints about Java from a decade ago. Have you used it lately? Java's GCs are incredible and you have a menu of algorithmic optio
by mabbo 4y ago
That sounds a lot like the complaints about Java from a decade ago. Have you used it lately?
Java's GCs are incredible and you have a menu of algorithmic options that let you avoid whatever problem you're worried about.
- dboreham 4y agoThe JVM GC is fundamentally the same as 10 years ago.
- titzer 4y agoShenandoah did not exist 10 years ago, and G1 was not deployed.
- bitcharmer 4y agoSaying this just shows you don't know much about modern JVM.
- hackerlight 4y agoDo you use a proprietary JVM at your place?
- bitcharmer 4y agoNope. Only OpenJDK and Azul Prime.
- cogman10 4y ago10 years ago the algorithms you could pick were serial, parallel, and CMS. Today we've removed CMS, added G1GC, and added ZGC. G1GC is similar to the parallel in the way it operates but is divided up enough to control for latency. ZGC is fundamentally different from the parallel collector or G1GC. Suggesting it is the same is to suggest you know nothing of the changes that have happened.
- jcelerier 4y ago> Java's GCs are incredible and you have a menu of algorithmic options can these options be used in separate parts of a single app ? e.g. the app I'm developing in C++ has parts that do realtime audio, others that do GPU rendering, others that do classic Qt Widgets GUI, others that do offline computations on datasets - and they all have different performance characteristics and need different memory management schemes to get the best out of each, all while being in a single process; there's reference counting, tree-based allocation, pooled, linear, a GC-ish thing which ensure that memory is freed in specific non-realtime threads... Can that be done with Java or is one tied to a single GC implementation for a given execution of a process?
- imtringued 4y agoIf Java had isolated heaps then C++ would become redundant in every aspect except memory efficiency.
- marwis 4y agoWhat are the advantages of isolates vs running multiple JVM processes other than avoiding slightly higher memory usage and some small context switch overhead on IPC - which should be negligent as presumably communication between isolated components would be coarse grained?
- jcelerier 4y agoI can give you an example: in the Bitwig digital audio workstation, you can choose whether external third-party plug-ins (small audio processors) are in the host process or in external processes communicating through shared memory. I just tried with a very simple plug-in (3 band EQ) to see how much I can stack in either case: - In the "in-process" case I can stack ~1400 plug-ins on a single channel before I hear a crack in the sound. - In the "shared memory" case I can go up to ~200 at most. And I'm confident that they really did the very best things possible for the implementation to be performant. So for me the "things isolated in their own process" means literally getting seven times less out of my system than in the host process (and that's frankly unuseable, definitely not "negligent").