main java.lang.OutOfMemoryError:Java堆空间

mrb*_*lah 0 java out-of-memory

我的代码是这样的:

for(SomeObject so : someObjects)
{
  Blah b = so;
  NewObject n = dao.GetNO(b.23);
}
Run Code Online (Sandbox Code Playgroud)

即它在每次迭代时在for循环内创建一个新变量.

这可能是内存不足问题的原因吗?

Netbeans报告的错误:

Caused by: java.lang.OutOfMemoryError: Java heap space
        at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:133)
        at java.lang.StringCoding.decode(StringCoding.java:173)
        at java.lang.String.<init>(String.java:443)
        at java.lang.String.<init>(String.java:515)
        at com.gargoylesoftware.htmlunit.WebResponseImpl.getContentAsString(WebResponseImpl.java:215)
        at com.gargoylesoftware.htmlunit.WebResponseImpl.getContentAsString(WebResponseImpl.java:205)
Run Code Online (Sandbox Code Playgroud)

Upate 这是一个java控制台应用程序,整个应用程序基本上都在forloop中运行.

Ami*_*ani 5

您使用的是Java 5或更高版本,还是其中一个旧版JVM?您可以尝试通过使用-XX:+ HeapDumpOnOutOfMemory布防Java命令行或使用JConsole附加到您的进程并请求堆转储来跟踪OOM的原因.然后,您可以使用Eclipse MAT工具打开转储并查看对象图,以查看哪个对象保存在程序中.MAT可以看到那些主导对象图的对象 - 所以它变得非常清楚究竟什么是泄漏.查看堆栈跟踪没有帮助,并且可能会产生误导,因为程序的一个位置的泄漏可能导致其他地方的分配失败.