2012-11-22 26 views
1

我運行一個makefile,並有一段時間我碰到下面的錯誤後:如何處理java.lang.OutOfMemoryError

java.lang.OutOfMemoryError 

我想知道是否有命令,讓我增加 Java堆空間。我不想更改makefile本身,所以我需要 某種「全局」命令,它允許我重置Java堆空間。

非常感謝, 帕特里克

編輯:謝謝您的回答。但是,我要尋找一個更加全球化的命令,即 讓我指定要設置的堆空間一勞永逸,如:

SET JAVA_HEAP_SPACE = 5GB

感謝

+0

類似的問題: http://stackoverflow.com/questions/417152/how-do-i-set-javas-min-and-max-heap-size-through-environment-variables –

+0

這是確切的副本http://stackoverflow.com/questions/417152/how-do-i-set-javas-min-and-max-heap-size-through-environment-variables – Jayan

+0

除非你是一個32位的Windows版本,它應該具有最多四分之一的內存。如果這還不夠,那麼即使整個OpenJDK源代碼可以使用默認設置進行編譯,您的內部版本也會有些奇怪。順便說一句:Maven是比Java構建更好的選擇。 –

回答

4
  • 可以設置從命令行獲得java堆空間:java -Xmx1600m program現在你的堆空間是1600 MB(假設你的硬件已經可以承受1600MB)。

  • 對於Windows平臺,你可以從Java運行時環境 設置也是如此。按照控制面板=>程序=> Java。導航到Java選項卡。查看Java運行時環境設置。將-Xmx1600m添加到運行時參數。保存並繼續。

  • 對於Linux平臺,您可以啓動控制面板並編輯運行時參數。它可以運行在/usr/j2se/jre/bin/ControlPanel之類的東西上。找到你自己的目錄。讀到這裏,請:http://docs.oracle.com/javase/7/docs/technotes/guides/deployment/deployment-guide/jcp.html

+0

是的,但這意味着我必須更改生成文件,其中實際執行java構建。我不想這樣,我想知道我是否可以爲所有執行的Java程序設置堆...... – Patrick

+0

不幸的是,我在Linux上使用命令行。 Windows中是否有類似的東西? – Patrick

+0

@Patrick我也爲Linux添加了一個解決方案。請再次檢查。 – Juvanis

1

您可以使用下面的命令:

java -Xms64m -Xmx256m ClassName 
Xms<size>  set initial Java heap size 
Xmx<size>  set maximum Java heap size 

在這個例子中,設置爲64MB,並最大堆大小初始堆大小設置爲256MB。欲瞭解更多信息,請查詢this

0

問題並不十分清楚但是,您應該將-Xmx標誌看作JVM啓動參數,以便爲應用程序提供更多內存。請閱讀here瞭解更多信息。您還應該對Java應用程序進行分析並查看大部分可用內存正在被消耗的位置。你可以利用JProfiler(只是谷歌有關工具來分析你的Java應用程序)來分析和查看有關應用程序哪一部分消耗更多系統資源的統計信息。