【发布时间】:2011-11-05 12:44:01
【问题描述】:
正如标题所示,我在线程中遇到了这个错误。
有问题的 LOC 如下所示:
for (int i = 0; i < objectListSize; i++) {
logger.INFO("Loop repeat: "+i+" ...", true);
final Double discreteScore = sp.getDouble(superPeerSocket);
final int expectedObjectIDs = sp.getInteger(superPeerSocket);
final String discreteObjects[] = new String[expectedObjectIDs];
for ( int j = 0; j < expectedObjectIDs; j++)
discreteObjects[j] = sp.getString(superPeerSocket);
htPlus.attachInitialDiscreteList2L1(discreteScore, discreteObjects);
}
最后的 String distinctObjects[] 声明是我得到错误的地方。我在一个线程中运行这段代码。当我得到这个时,我有两个线程当前处于活动状态。我还尝试使用 Eclipse 中的 MAT 工具。这是一个包含一些图表文件的链接:
PLC chart files (dropbox URL)如果有人对这个问题有任何想法,我将不胜感激。 P.S.:我正在考虑删除循环,尽管它在第一次循环传递中失败了。
(程序失败时我在输出中得到这个)
Expected data size: 10
Repeat: 0 ...
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid3793.hprof ...
Heap dump file created [1404020 bytes in 0.015 secs]
Exception in thread "1" java.lang.OutOfMemoryError: Java heap space
at planetlab.app.factory.Worker$15.run(Worker.java:796)
at java.lang.Thread.run(Thread.java:662)
无关紧要的:在堆栈溢出中发布帖子时,代码格式不正确/预期错误是怎么回事?我花了 15 分钟才弄清楚该怎么做 :@ :S :@
【问题讨论】:
-
您应该在创建数组之前记录
expectedObjectIDs的值... -
您使用的
-Xmx的值是多少?堆空间使用看起来很小。回复:代码格式化,stackoverflow.com/editing-help -
那么expectedObjectIDs的值是多少?
-
@Jon Skeet:我真笨!不知道我怎么从来没想过记录价值!谢谢! :) (at) Matt Ball:是的,我已经看到了,但仍然不清楚你应该怎么做(我相信这样说会更简洁:突出显示代码然后按 Ctrl+K - 或者我很奇怪:) :P :)
-
历史记录:值为 1077084160 :P
标签: java multithreading eclipse memory-management memory-leaks