2010-08-03 101 views
0

我必須創建一個RMI程序,當我運行這個程序時它將只運行幾分鐘,然後顯示「java.lang.outofmemoryError:java heap space」問題。我必須使用Window 7 1.5 GB的RAM和JDK1.6java.lang.outofmemoryError:java堆空間問題

感謝,

+0

'當我運行這個程序'。 *什麼*程序? – EJP 2010-08-03 10:10:03

回答

1

氣味內存泄漏。雖然Java沒有垃圾回收功能,但您仍然需要確保您不必拘泥於(強引用)不再需要的對象。例如,如果您不註銷事件處理程序(並且事件處理程序樣板代碼擁有對處理程序的強引用),那些處理程序將永遠不會被收集,從而導致內存泄漏。

不知道更多你的程序,我們可以在這裏猜測。

0

您可能只需要使用-Xmx選項來增加你的最大堆大小。

你可以閱讀本tuning guide

0

內存泄漏。在jdk中使用jvisualvm來找出原因。

0

這可能是幾件事情之一。

  • 您可能有內存泄漏。在垃圾收集的環境中,這意味着你要記住你不再需要的內存。使用一個分析器(Yourkit或其他)來進行內存分析將有助於確定你在做什麼以及如何執行內存分析。
  • 根據您的jvm版本,默認堆分配可能不是那麼多。儘管不適用於rmi應用程序,但有可能合法地使用內存不足。使用-Xms開關增加初始堆大小,使用-Xmx限制堆的最大大小。例如
    java -Xms128m -Xmx512m ...
相關問題