1

我有一个多线程程序,它处理大量的字符串操作,执行几小时后,内存超出并导致“java.lang.OutOfMemoryError:Java 堆空间”问题。而且我已经把我的整个内存都用到了java程序上,即16 GB。

对于测试,我创建了以下示例程序以了解问题及其执行相同的问题,在重新初始化字符串生成器数千次后,它消耗超过 5-10MB 的内存,任何人都可以帮助克服这个问题.

StringBuilder strObj = new StringBuilder();
for(int i=0; i<50000; i++) {
    strObj = null;
    strObj = new StringBuilder();
}
4

2 回答 2

1

它在什么意义上消耗了 5-10MB 的内存?你在这里分配了那么多。在需要内存之前,Java 不会费心回收它。这不可能导致OutOfMemoryError,不是这种类型的代码。

那么,为什么不实际显示导致 OOME 的代码类型呢?

于 2012-07-17T19:45:02.817 回答
0

感谢支持人员,实际上我的问题是通过调用System.gc()语句手动收集垃圾后解决的。

于 2012-07-18T10:21:32.277 回答