java.lang.OutOfMemoryError : Java heap space 及其處理

來源:互聯網
上載者:User

java.lang.OutOfMemoryError : Java heap space 及其處理

    在開發中,發現使用Java程式從資料庫中查詢大量的資料時出現異常:
    java.lang.OutOfMemoryError: Java heap space

    在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將拋出此異常資訊。

    JVM堆的設定是指java程式運行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動化佈建Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。
    例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar
    如果Heap Size設定偏小,除了這些異常資訊外,還會發現程式的響應速度變慢了。GC佔用了更多的時間,而應用程式指派到的執行時間較少。
    Heap Size 最大不要超過可用實體記憶體的80%,一般的要將-Xms和-Xmx選項設定為相同,而-Xmn為1/4的-Xmx值。
    Heap size的 -Xms -Xmn 設定不要超出實體記憶體的大小。否則會提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。

    這個問題的根源是jvm虛擬機器的預設Heap大小是64M,可以通過設定其最大和最小值來實現.設定的方法主要是幾個.

    1.可以在windows 更改系統內容變數
    加上JAVA_OPTS=-Xms64m -Xmx512m

    2,如果用的tomcat,在windows下,可以在

    C:/tomcat5.5.9/bin/catalina.bat 中加上:
    set JAVA_OPTS=-Xms64m -Xmx256m

    位置在: rem Guess CATALINA_HOME if not defined 這行的下面加合適.

    3.如果是linux系統
    Linux 在{tomcat_home}/bin/catalina.sh的前面,加
    set JAVA_OPTS='-Xms64 -Xmx512'

 

    需要說明的是,在發布環境中,按以上的方法配置是可行的,如在開發環境,還在考慮其它的因素。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.