我有一个执行大量操作的算法。它导致
java.lang.OutOfMemoryError: GC overhead limit exceeded
由于我无法重复使用先前操作中涉及的双精度数,因此无论为JVM分配多少内存,它最终都会被填满。我该如何避免这个问题? GC配置?其他一些JVM选项?
编辑:一些相关的代码。
所以,这是我试图执行的内容 -
def calculateModel(d: Array[structure.Vector], y: structure.Vector): Model = {
val H = new Matrix(d)
val w = H.transpose.multiply(H).inverse.multiply(H.transpose).multiply(y)
return new Model(w, null, null)
}
Vector和Matrix是包含Array [Double]的类,并且对向量和矩阵有各自的操作。
由于我从IDE中的main()方法调用此方法,我认为发生的事情是main()中的本地作用域没有任何对象进入堆。我们非常欢迎更好的解释:)