Java heap space

来源:互联网 发布:电脑操作监控软件 编辑:程序博客网 时间:2024/06/16 18:09

在JVM中,如果98%的时间用于GC,并且Heap size 不足2%的时候,就会抛出异常

java.lang.OutOfMemoryError:Java heap space

JVM堆的设置是指Java程序运行过程中,JVM可以调配使用的内存空间。

JVM在启动的时候会自动设置Heap size 的值,其初始空间(即 -Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的

1/4.

可以利用JVM提供的-Xmn -Xms -Xmx等选项进行设置。

例如:java -jar -Xmn16m -Xms6m -Xmx128m MyApp.jar 如果Heap Size设置偏小,除了这些异常信息外,还会 发现程序

的相应速度变慢了。

GC占用了更多的时间,而应用分配到的选项设置为相同,而-Xmn为1/4的-Xmx的值。

Heap size 的-Xms -Xmn设置不要超过物理内存的大小。否则会提示 “Error occurred during initiialization of VM Could not 

reserve enough space for object heap”

这个问题的本源是JVM虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现。

设置的方法主要是几个

1):可以在Windows更改系统环境变量加上Java_OPTS=-Xms64m -Xmx512m

2):如果用tomcat,在Windows下,可以在C:omcat5.5.9incatalina.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 -Xmx512m’

注意:

如果在测试的时候,可能会用Eclispse这时候就需要在Eclipse->run -arguments 中的VM arguments中输入 -Xms32m-Xmx800m 这个参数就可以了



0 0