为什么在给定文件大小的情况下会得到java.lang.OutOfMemoryError?

时间:2011-03-25 11:35:22

标签: java performance

我正在解析一个328kb的文本文件并将内容存储在java List中。

这是命令行(我应该在给定参数的情况下使用1GB ram。)

java -Xms128m -Xmx1024m -cp .:jars/* CentroidGenerator data/data.xml

但是我得到Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

这是代码,我已将其大部分用于调试:http://d.pr/pRxe 感谢

1 个答案:

答案 0 :(得分:22)

嗯,这对我来说有点不对劲:

for (int i=0; i<centroids.size(); i++) {            
    Centroid centroid = new Centroid(...);
    // Some other code here
    centroids.add(centroid);
}

假设centroids的大小为1.在循环的第一次迭代中,i为0,小于1.您创建了Centroid的新实例,将其添加到列表中,然后继续。现在i是1,但现在centroids.size()是2,所以你继续......等等。

基本上,在你的内存不足之前,这个循环不会停止。

我不清楚你在循环中尝试做什么,但你不想做 做的事情......