【发布时间】:2012-02-12 18:00:52
【问题描述】:
对于学校项目,我必须编写不同类型的算法。问题是,我有一个可行的算法。但我必须运行它几次,一段时间后它给了我以下错误:
线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间
我知道错误的含义,但是是否可以让 Java 在运行期间搜索空白空间?我知道它使用了很多空间,在某些时候没有使用。它在应用程序运行期间将很多对象设置为 null 并创建很多新对象,因此内存不足。
那么具体:是否可以让 JVM 释放一些设置为 null 的空间?或者在程序运行时释放一些空间?我知道我可以将 JVM 设置为更多空间,但迟早我会遇到同样的问题。
如果您需要我的 IDE(如果它是 IDE 特定的),那就是 Eclipse。
【问题讨论】:
-
除非你的记忆力很小,否则你很有可能做错了什么......对于大多数学校项目来说,真的不应该面临记忆问题
-
stackoverflow.com/a/5121287/20394 特别谈到了在 Eclipse 下运行时如何增加内存量,该文章的其余部分涉及诊断和修复内存问题的策略。
-
第一步:充分了解你的程序允许使用多少内存,你的程序应该使用多少内存,以及它实际使用了多少。
-
除了 [粗略] 估计您的程序创建的对象数量之外,分享您拥有的系统内存量也是有益的。或者,您可以跟踪
jconsole使用了多少内存,并查看在什么时间使用了多少。
标签: java jvm out-of-memory