今天测试的时候,遇到这样一个问题:java.lang.OutOfMemoryError:java heap space。从字面意思就可以看出,这是由于内存溢出的问题。
由于我们使用的是Eclipse集成开发环境进行的开发,eclipse 有启动参数里设置jvm大小,因为eclipse运行时自己也需要jvm,所以eclipse.ini里设置的jvm大小不是具体某个程序运行时所用jvm的大小,这和具体程序运行的jvm大小无关。那么怎么才能设置某个程序的jvm大小呢(当然控制台运行的话不会存在这个问题,如:java -Xms256m -Xmx1024m classname,这样就可以把当前程序的jvm大小给设定)?因为eclipse里默认的一个程序的jvm配置为:-Xms8m -Xmx128m,所以我们的处理耗内存比较大时需要手动调整一下,以便不会内存溢出。具体的设置方法为:选中被运行的类,点击菜单‘run->run...’,选择(x)=Argument标签页下的vm arguments框里输入 -Xmx512m, 保存运行就ok了。
以上只是知道了怎么修改,那么到底各参数是什么意思呢?为什么会出现这些问题呢?
-Xms:初始Heap大小,使用的最小内存
-Xmx:java heap最大值,使用的最大内存