使用 MyEclipse 开发项目后,随着项目文件的增多,以及运行时间的增加,
实际上 MyEclipse 所消耗的内存是会一直增大的,有的时候会出现 MyEclipse 自身内存不
足的情况,一般会出现下面的提示对话框:
图 1.27 内存不足提示对话框
一般情况下这是因为 MyEclipse 占用到了它所能达到的最高内存。出于
安全方面的考虑,Java 本身不会把所有的系统内存都占为己有,而是会分配一个最大值,
一旦到达此最大值,运行的程序就会出现 OutOfMemery 错误。怎么修改它呢?同样的在刚
刚提到的 eclipse.exe 所在目录一般都有个文件叫 eclipse.ini,用记事本啊,EditPlus 或者
UltraEdit 或者免费的 Notepad++,Notepad2 等软件都可以打开它,之后修改内容为如下所
示:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en
-XX:PermSize=128M
-XX:MaxPermSize=256M
主要需要修改的参数一般是-Xmx512m,它表示所能使用的最大内存为 512MB。一般来
说改成你电脑上能有的实际内存大小的 80%左右是没问题的,如果你电脑有 2G 内存,你
可以把它修改为 1024M。然而有趣的是,不要改成超过 1.5G 大小的数值,否则反而会不稳
定(Windows 下面的经验),容易莫名退出。
JVM 提供了各种用于调整内存分配和垃圾回收行为的标准开关和非标准开关。其中一些设
置可以提高 JAVA IDE 的性能。
注意,由于 -X (尤其是 -XX JVM)开关通常是 JVM 或 JVM 供应商特定的,本部分介
绍的开关可用于 Sun Microsystems J2SE 1.4.2 以及 JDK 1.5。
以下设置在大多数系统上将产生比工厂更好的设置性能。
-vmargs - 表示将后面的所有参数直接传递到所指示的 Java VM。
-Xverify:none - 此开关关闭 Java 字节码验证,从而加快了类装入的速度,并使得在仅为
验证目的而启动的过程中无需装入类。此开关缩短了启动时间,因此没有理由不使用它。
-Xms24m - 此设置指示 Java 虚拟机将其初始堆大小设置为 24 MB。通过指示 JVM 最
初应分配给堆的内存数量,可以使 JVM 不必在 IDE 占用较多内存时增加堆大小。
-Xmx96m - 此设置指定 Java 虚拟机应对堆使用的最大内存数量。为此数量设置上限表示
Java 进程消耗的内存数量不得超过可用的物理内存数量。对于具有更多内存的系统可以增
加此限制,96 MB 设置有助于确保 IDE 在内存量为 128MB 到 256MB 的系统上能够可
靠地执行操作。注意:不要将该值设置为接近或大于系统的物理内存量,否则将在主要回收
过程中导致频繁的交换操作。
-XX:PermSize=20m - 此 JVM 开关不仅功能更为强大,而且能够缩短启动时间。该设置
用于调整内存"永久区域"(类保存在该区域中)的大小。因此我们向 JVM 提示它将需要的
内存量。该设置消除了许多系统启动过程中的主要垃圾收集事件。SunONE Studio 或其它
包含更多模块的 IDE 的用户可能希望将该数值设置得更高。
下面列出了其它一些可能对 ECLIPSE 在某些系统(不是所有系统)上的性能产生轻微或
明显影响的 JVM 开关。尽管使用它们会产生一定的影响,但仍值得一试。
-XX:CompileThreshold=100 - 此开关将降低启动速度,原因是与不使用此开关相比,
HotSpot 能够更快地将更多的方法编译为本地代码。其结果是提高了 IDE 运行时的性能,
这是因为更多的 UI 代码将被编译而不是被解释。该值表示方法在被编译前必须被调用的次
数。
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC - 如果垃圾回收频繁中断,则请尝试
使用这些开关。此开关导致 JVM 对主要垃圾回收事件(如果在多处理器工作站上运行,则
也适用于次要回收事件)使用不同的算法,这些算法不会影响整个垃圾回收进程。注意:目
前尚不确定此收集器是提高还是降低单处理器计算机的性能。
-XX:+UseParallelGC - 某些测试表明,至少在内存配置相当良好的单处理器系统中,使用
此回收算法可以将次要垃圾回收的持续时间减半。注意,这是一个矛盾的问题,事实上此回
收器主要适用于具有千兆字节堆的多处理器。尚无可用数据表明它对主要垃圾回收的影响。
注意:此回收器与 -XX:+UseConcMarkSweepGC 是互斥的。
假设机器是 512MB 的内存,可以用这样的 eclipse 启动参数:eclipse.exe -vmargs
-Xverify:none -Xms64M -Xmx256M -XX:PermSize=20M -XX:+UseParallelGC