昨天遇到了一个异常:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
at java.lang.StringBuilder.append(StringBuilder.java:119)
at process.Car.sjqb(Car.java:104)
at process.Car.main(Car.java:249)
查了很多资料都说是JVM有问题,内存溢出了,JVM没来得及清理系统垃圾。所以首先我要知道如何查看JVM内存使用情况。
这个问题也是比较难弄,关键是格式要很注意,经过看各位大师的使用方法,最终我把他们的经验以及我的经验整理如下:
1、在eclipse的根目录下新建文本文档,命名为displayGC,当然这个名字你可以随便起,只需要和后面的debug值一致就行。
2、打开此文件,输入以下内容org.eclipse.ui/perf/showHeapStatus=true,保存在eclipse的根目录下,并且不加扩展名。
3、用EditPlus打开录下的eclipse.ini文件。在最开始处添加
-debug displayGC -vm javaw.exe
注意: -vm javaw.exe指的是JVM的路径,这里默认的是系统的JVM路径,如果你使用的不是系统的JVM,必须写出详细路径。这四个部分分别放在不同行,这是格式要求,如下:
-debug
displayGC
-vm
javaw.exe
-vmargs
-Xms34M
-Xmx256M
-XX:PermSize=128M
-XX:MaxPermSize=512M
4、如果你是用记事本打开eclipse.ini文件,那么必须要在四句命令之间加一个小黑快。
5、此时打开eclipse后,在状态栏可以看到JVM的使用情况了。
6、当你把鼠标放到上面时,会显示更加详细的信息。这样我们就看到了JVM的使用情况了。(详图见附件)
关于如何解决上面所说的异常,还在研究中。[sad]