So, rather than reinvent the wheel, I just ported the Clojure collections over, added generics and made them more Java-ery [1]<p>In the Clojure world, (and indeed in Haskell and other pure-fp languages) there is a lot more garbage collection. Rich Hickey makes a great case for this trade off here [2].<p>On the JVM now very little of it is stop-the-world GC, it mostly does incremental.  It&#x27;s been a while since I profiled a Java app in anger, but even back on JDK5 this was the case, and I know they changed it significantly in JDK7 to the G1 collector.. anyone have a clue about that?<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;robmoffat&#x2F;pure4j&#x2F;blob&#x2F;master&#x2F;docs&#x2F;tutorial_collections.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;robmoffat&#x2F;pure4j&#x2F;blob&#x2F;master&#x2F;docs&#x2F;tutoria...</a>
[2] <a href="http:&#x2F;&#x2F;www.infoq.com&#x2F;presentations&#x2F;Value-Values" rel="nofollow">http:&#x2F;&#x2F;www.infoq.com&#x2F;presentations&#x2F;Value-Values</a>
[3] <a href="http:&#x2F;&#x2F;www.oracle.com&#x2F;webfolder&#x2F;technetwork&#x2F;tutorials&#x2F;obe&#x2F;java&#x2F;G1GettingStarted&#x2F;index.html" rel="nofollow">http:&#x2F;&#x2F;www.oracle.com&#x2F;webfolder&#x2F;technetwork&#x2F;tutorials&#x2F;obe&#x2F;ja...</a>