在网上搜调整eclipse内存的方法,都指出在eclipse.ini文件中设置jvm参数即可。可是跑程序时还是发现内存没有改变,不是设置的1024M,而依然是107M(eclipse里默认的一个程序的jvm配置为:-Xms8m -Xmx128m)。
犯错的原因是:eclipse运行时自己也需要JVM,这就要设置eclipse.ini的JVM参数。因此eclipse.ini里设置的JVM大小不是具体某个程序运行时所用 JVM的大小,这和具体程序运行的JVM大小无关。
那么怎么才能设置某个程序的JVM大小呢(当然控制台运行的话不会存在这个问题,如:java -Xms256m -Xmx1024m classname,这样就可以把当前程序的JVM大小给设定)?
设置方法显而易见:选中将要运行的类,右键选择run configuration...,选择(x)=Argument标签页,在其vm arguments框里输入 -Xmx1024m, 保存运行就ok了。
详细内存占用情况查看:
在查看JVM内存状况时,除了要知道每个代的占用情况外,很多时候更要知道其中各个对象占用的内存大小,这样便于分析对象的内存占用情况,在分析OutOfMemory的场景中尤其适用。
输入jmap -histo [pid]即可查看jvm堆中对象的详细占用情况,如图1所示。
图1 jmap -histo运行效果
输出内容按照占用空间的大小排序,例如上面的[C,表示char类型的对象在jvm中总共有243 707个实例,占用了501 638 784 bytes的空间。
eclipse监视对内存占用情况:
右下角可查看对内存占用情况,并可以收到清理垃圾