天天看點

java.lang.OutOfMemoryError: Java heap space 解決方法

原文:http://www.blogjava.net/liuwentao253/archive/2008/06/03/205466.html

java.lang.outofmemoryerror: java heap space 解決方法

這個問題的根源是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'

java.lang.outofmemoryerror: java heap space 

使用java程式從資料庫中查詢大量的資料時出現異常:

在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”。