http://blog.csdn.net/wkupaochuan/article/details/7714271
我只修改过一次eclipse.ini文件,是因为myeclipse使用出了问题:编辑jsp页面的时候写java代码,只要用到自带的关联提示(例如String.,只要敲击“.”就会卡死)。后来同事说可以试着修改eclipse.ini文件,把内存改大一点也许就行了,结果改了N次几乎到1G了还是没解决。虽然没解决问题但也算跟eclipse.ini见了面,所以这次EOS总是卡死的时候我想到了再次修改这个文件,但是不能像上次那样盲从修改了,得深入了解eclipse.ini。
我的eclipse.ini文件内容如下:
-vmargs
-Xms64m
-Xmx512m
-XX:PermSize=64M
-XX:MaxPermSize=128M
-XX:+UseParallelGC
在开始了解这些参数之前,是对JVM内存分配的了解。JVM有堆内存(Heap)和非堆内存(Non Heap)。堆内存在JVM启动时分配,主要用来存放用户实例和数组等用户数据,即用户可操作内存。非堆内存用户不可访问,主要用来存放类方法、结构和一些JVM内部处理程序,即JVM留作自用的内存。
关于这些参数。
-vmargs(VirtualMachine Arguments)即JAVA虚拟机参数。
-Xms指的是初始化的堆内存大小,一般为内存的1/64。
-Xmx指的是堆内存的最大空间,一般为内存的1/4。
-XX:PermSize非堆内存的初始大小,一般为内存的1/64。
-XX:MaxPermSize非堆内存的最大空间,一般为内存的1/4。
-XX:+UseParallelGC仅用于双核CPU,增加GC速度。
初始内存大小和最大内存大小存在一个关系。当内存空间的可用空间小于40%的时候,JVM会增加内存知道最大内存,可用空间大于70%的时候JVM会减小内存空间知道初始内存大小。这种关系对堆内存和非堆内存都适用。
这里有一点儿值得注意,我们的机子一般都会设置内存限制,而且一般比机子内存小很多,所以在设置eclipse.ini参数的时候要注意Xmx+XX:MaxPermSize<内存限制。
这个学习过程中还有点儿要说的。就是关于GC。我本坏人,但这次却落在在大众后面。在网上学习eclipse.ini的时候突然出现这么一个词,我立马就闷了,不懂啊!!然后百度之,我擦,排名榜首的居然是……你懂得。后来偷偷问师兄,才知道原来这里指的应该是Garbage Collection垃圾回收机制。还有一种解释就是“公测”,说企业一般会在GC之后,将初始内存大小与最大内存大小设置为相同,这样就避免了多次内存分配开销了。我想大概是因为企业有钱,硬件给力、到位,内存不是问题吧