Really high performance Java code tries to avoid any allocations on the hot paths, since that requires GC. This means a lot of in-place mutation on pre-allocated objects. (Lucene does this, for example) While this isn&#x27;t impossible in Clojure, you do have to give up a lot of the immutable goodness that makes it such a pleasant development environment.