对重复的道歉,但我还没有能够通过阅读其他帖子来解决这个问题。我正在尝试运行计算密集的迭代算法。下一个迭代由函数" update"给出。我通过
收集所有迭代(def iterates (doall (take 1000 (iterate update initial-state))))
其中initial-state是我正在初始化算法的零迭代。不幸的是,我无法提供最小的例子......更新是一个非常复杂的功能,它将地图数据结构作为输入并输出更新的地图数据结构。代码在最多800次的总迭代中运行良好,但随后产生更大的误差。一般意见认为仅仅增加垃圾收集器可用的大小是不够的,因为这是一个更深层问题的症状(也许)。在其他帖子中,所提出的问题非常具体,但我的更新功能非常复杂。那么如何在这里提供的一般性中解决这个问题呢?我可以使用某些工具实用程序吗?
由java.lang.OutOfMemoryError引起 超出GC开销限制
Double.java: 519 java.lang.Double/valueOf
Numbers.java: 611 clojure.lang.Numbers$DoubleOps/multiply
Numbers.java: 148 clojure.lang.Numbers/multiply
core.clj: 21 ssm4clj.core/corr
core.clj: 6 ssm4clj.core/corr
core.clj: 42 ssm4clj.core/innovation
core.clj: 40 ssm4clj.core/innovation
core.clj: 2522 clojure.core/partial/fn
core.clj: 2646 clojure.core/map/fn
LazySeq.java: 40 clojure.lang.LazySeq/sval
LazySeq.java: 49 clojure.lang.LazySeq/seq
RT.java: 521 clojure.lang.RT/seq
core.clj: 137 clojure.core/seq
core.clj: 2654 clojure.core/map/fn
LazySeq.java: 40 clojure.lang.LazySeq/sval
LazySeq.java: 49 clojure.lang.LazySeq/seq
Cons.java: 39 clojure.lang.Cons/next
RT.java: 688 clojure.lang.RT/next
core.clj: 64 clojure.core/next
protocols.clj: 168 clojure.core.protocols/fn
protocols.clj: 124 clojure.core.protocols/fn
protocols.clj: 19 clojure.core.protocols/fn/G
protocols.clj: 31 clojure.core.protocols/seq-reduce
protocols.clj: 75 clojure.core.protocols/fn
protocols.clj: 75 clojure.core.protocols/fn
protocols.clj: 13 clojure.core.protocols/fn/G
core.clj: 6545 clojure.core/reduce
core.clj: 6527 clojure.core/reduce
core.clj: 347 ssm4clj.core/mean-conditional
core.clj: 319 ssm4clj.core/mean-conditional
REPL: 332 ipp4clj.multiplexing/update-single-gp-mean
REPL: 329 ipp4clj.multiplexing/update-single-gp-mean