今天工作时我在我们的应用程序中遇到了这个问题。 情景是:我们点击一个加载按钮,它会加载缺乏来自数据库的记录。但问题是,通过点击刷新按钮来重新加载相同的记录时,它会给出OutOfMemoryError。任何人都可以简单地解释一下可能的原因是什么,因为一开始试图加载所有的记录,但是为什么我们在刷新它的时候得到了异常。获取OutOfMemoryError的主要可能原因是什么?
如果有任何有用的资源可用来研究这种情况,也可以帮助很多人。 在此先感谢...
今天工作时我在我们的应用程序中遇到了这个问题。 情景是:我们点击一个加载按钮,它会加载缺乏来自数据库的记录。但问题是,通过点击刷新按钮来重新加载相同的记录时,它会给出OutOfMemoryError。任何人都可以简单地解释一下可能的原因是什么,因为一开始试图加载所有的记录,但是为什么我们在刷新它的时候得到了异常。获取OutOfMemoryError的主要可能原因是什么?
如果有任何有用的资源可用来研究这种情况,也可以帮助很多人。 在此先感谢...
我知道我们的应用程序有很多线程处理。我试图通过使用下面的命令来减少服务器中的堆栈大小,并且它工作正常。
-Xss512k
(设置Java线程堆栈大小,这一点)
这里是resource像我已经习惯了解决此问题。
这不回答*原因*的问题。你能否确认你创建了太多的线程,这样累积的堆栈大小实际上超过了一些限制? –
唯一的原因是您不断创建新对象而没有释放足够的空间,或者您创建的线程太多。
您可以使用Java VisualVM's profiler来执行一些内存分析。这允许您获得概览,哪些对象在内存中,哪些其他对象/线程具有对它们的引用。
Java VisualVM应该是Sun JDK的一部分。
参见:
你要确保旧结果不再重新加载它们时占用内存? – Mark
这可以帮助https://plumbr.eu/outofmemoryerror/java-heap-space – dhS
这个项目已经开发出来了,从上周开始我就开始工作了,我对它没有太多深入的了解。你能否建议我如何确保旧的结果不再占用记忆?抱歉地说,但为了安全和公司的政策,我不能在这里发布代码?如果一般的阐述也帮助我很多。谢谢。 –