Allocation rate impact for garbage collected languages(plumbr.eu)
plumbr.eu
Allocation rate impact for garbage collected languages
https://plumbr.eu/blog/garbage-collection/what-is-allocation-rate
1 comments
There have been many ambitious projects being developed in other GCed languages.
In Java one can see that there are implementations trying to support soft-realtime. Also concurrent GCs on multicore machines are provided, to lessen the problem of stalls due to GC.
In the Common Lisp world the response have been sophisticated GCs or avoiding GCs. For example G2 is a tool to develop soft realtime expert systems - written in a Common Lisp implementation with lots of manual memory management. G2 is used to for process and production control applications.
In Java one can see that there are implementations trying to support soft-realtime. Also concurrent GCs on multicore machines are provided, to lessen the problem of stalls due to GC.
In the Common Lisp world the response have been sophisticated GCs or avoiding GCs. For example G2 is a tool to develop soft realtime expert systems - written in a Common Lisp implementation with lots of manual memory management. G2 is used to for process and production control applications.
The GC pauses locking entire JVM for several seconds are indeed a concern for many application classes, financial exchanges included. Exactly for this purpose even designated JVMs are built, Azul for example is providing a pauseless JVM which is able to handle the garbage collection concurrently. Or if the JVM migration itself is not possible, other solutions, such as tuning the application to avoid Full GC entirely or using off-heap allocations for big data structures are used.
I've been using G1 for quite a long now and it doesn't do a major stop the world GC, unless in some very extreme theoretical situations I've never encountered yet. However sub-10-millisecond pause targets are still a challenge, but there is a lot of progress in this area still being made.
The worst consequence of Java GC is that sometimes an app can lock up for a few seconds. This is not the end of the world for a desktop app or the average web app but it is a big problem if you are running a financial exchange or other critical apps.
Because of the GIL, Python (for example) doesn't get anywhere near being suitable for these kind of applications. Haskell? Common LISP? Get out of here.