我有一个多线程程序,它处理大量的字符串操作,并且在几个小时的执行后,内存超出并导致“java.lang.OutOfMemoryError:Java heap space”问题。而且我已经将我的整个内存用于java程序,即16 GB。Java中的内存问题
为了测试我创建了下面的示例程序来理解问题,并且在重新初始化一个字符串生成器几千次后,它会消耗超过5-10MB的内存,但是任何人都可以请求帮助克服这个问题。
StringBuilder strObj = new StringBuilder();
for(int i=0; i<50000; i++) {
strObj = null;
strObj = new StringBuilder();
}
这段代码只会导致一个OOME,如果你运行GC。否则,所有旧的实例都会丢失,并且会被垃圾收集。换句话说,在正常使用情况下,这段代码不会导致任何内存问题。 – jtahlborn 2012-07-17 19:33:28
获取一个分析器并使用它。 – bmargulies 2012-07-17 19:42:30
要做多少个线程? – 2012-07-17 19:58:27