java.lang.outofmemoryError:java堆空间问题

时间:2010-08-03 05:52:13

标签: java rmi heap-memory

我必须创建一个RMI程序,当我运行这个程序时,它只运行几分钟然后显示“java.lang.outofmemoryError:java heap space”问题。我必须使用带有1.5 GB RAM和JDK1.6的Window 7

谢谢,

4 个答案:

答案 0 :(得分:1)

闻到内存泄漏。虽然Java会进行垃圾回收,但您仍需要确保不要持有(强引用)不再需要的对象。例如,如果您不注销事件处理程序(并且事件处理程序样板代码保存对处理程序的强引用),则永远不会收集这些处理程序,从而导致内存泄漏。

在不了解您的更多程序的情况下,我们可以在这里猜测。

答案 1 :(得分:0)

您可能只需要使用-Xmx选项增加最大堆大小。

您可以阅读此tuning guide

答案 2 :(得分:0)

内存泄漏。在jdk中使用jvisualvm来找出原因。

答案 3 :(得分:0)

这可以是几件事之一。

  • 您可能有内存泄漏。在垃圾收集环境中,这意味着您将保留不再需要的内存。使用分析器(Yourkit或其他)进行内存分析将有助于确定您要保留的内容以及方式。
  • 根据您的jvm版本,默认堆分配可能不是那么多。虽然不太可能是rmi应用程序,但你有可能合法地耗尽内存。使用-Xms开关增加初始堆大小,使用-Xmx限制堆的最大大小。例如
    java -Xms128m -Xmx512m ...