3 ms·
Generational GC was perceived as useful even before Java existed, for example in Lisp.
by pfdietz 2y ago
Generational GC was perceived as useful even before Java existed, for example in Lisp.
- actuallyalys 2y agoFunnily enough, my impression is that Clojure, the most popular Lisp on the JVM, creates a lot of garbage—probably more than Java—but I believe that’s due to it using immutable collections and not due to it being a Lisp.
- fiddlerwoaroof 2y agoYeah, immutable collections have to use structure-sharing to be implemented efficiently and this frequently results in common operations allocating lots of small objects rather than updating some object in-place.
- zozbot234 2y agoYou can use a borrow checker to replace immutable objects with update-in-place ("ephemeral") ones where feasible.
- fiddlerwoaroof 2y agoAnd, escape analysis and "dynamic extent" hints can have similar effects by stack-allocating intermediate values. Also, you can design your transformations to compose before handing off to a result builder, which is how modern Clojure reduces this problem.