调整 JVM 开关以提高性能

http://blog.csdn.net/petehero/archive/2005/10/28/518261.aspx

JVM 提供了各种用于调整内存分配和垃圾回收操作的标准开关和非标准开关。其中的一些设置可以提高 IDE 的性能。

请注意,由于 -X(尤其是 -XX JVM)开关通常是特定于 JVM 或 JVM 供应商的,因此一般“不支持”这些开关。本部分介绍的开关可用于 Sun Microsystems J2SE 1.4.2 和 J2SE 1.5。其他 JVM 实现的用户可能需要删除这些开关以运行 IDE。

以下设置在大多数系统上将产生比缺省设置更好的设置性能。除了设置“永久区域”大小以外,这些开关在一定时间段内已成为 IDE 的缺省开关,因此应位于 netbeans.conf 文件中。

  • -J-Xverify:none - 此开关关闭 Java 字节码验证,从而加快了类装入的速度,并使得在仅为验证目的而启动的过程中无需装入类。此开关缩短了启动时间,因此没有理由不使用它。
  • -J-Xms32m - 此设置指示 Java 虚拟机将其初始堆空间设置为 32 MB。通过指示 JVM 最初应分配给堆的内存数量,可以使 JVM 不必在 IDE 占用较多内存时增大堆空间。
  • -J-Xmx128m - 此设置指定 Java 虚拟机应对堆使用的最大内存数量。为此数量设置上限表示 Java 进程消耗的内存数量不得超过可用的物理内存数量。对于具有更多内存的系统可以添加此限制 - 128 MB 设置有助于确保 IDE 在内存量为 256 MB 的系统上能够可靠地执行操作。注意:不要将该值设置为接近或大于系统的物理内存量,否则在主要回收过程中将导致频繁的交换操作。
  • -J-XX:PermSize=20m - 此 JVM 开关不仅功能更为强大,而且能够缩短启动时间。该设置用于调整内存“永久区域”(类保存在该区域中)的大小。我们知道,所有 IDE 类均占用一定数量的内存,因此我们向 JVM 提示它将需要的内存数量。该设置消除了许多系统启动过程中的主要垃圾回收事件。SunONE Studio 或其他包含更多模块的 IDE 的用户可能希望将该数值设置得更高。

下面列出了其他一些可能对 NetBeans 在某些系统(不是所有系统)上的性能产生轻微或明显影响的 JVM 开关。尽管使用它们会产生一定的影响,但仍值得一试。

  • -J-XX:CompileThreshold=100 - 此开关将降低启动速度,原因是它指示 HotSpot 将很多其他方法编译为本地代码(与不使用此开关相比,这种编译速度更快)。其结果是提高了 IDE 运行时的性能,这是因为更多的 UI 代码将被编译而不是被解释。该值表示方法在被编译前必须被调用的次数。
  • -J-XX:+UseConcMarkSweepGC -J-XX:+UseParNewGC - 如果垃圾回收频繁中断,则请尝试使用此开关。此开关导致 JVM 对主要垃圾回收事件(如果在多处理器工作站上运行,则也适用于次要回收事件)使用不同的算法,这些算法“不会影响”整个垃圾回收进程。如果使用了 PermSize 开关,则还应向 netbeans.conf 文件中添加行 -J-XX:+CMSClassUnloadingEnabled,以便启用类卸载(使用此回收器时,缺省情况下不启用类卸载)。注意:目前尚不确定此回收器是提高还是降低单处理器计算机的性能。
  • -J-XX:+UseParallelGC - 某些测试表明,至少在内存配置相当良好的单处理器系统中,使用此回收算法可以将次要垃圾回收的持续时间减半。请注意,这是一个矛盾的问题 - 事实上此回收器主要适用于具有千兆字节堆的多处理器。尚无可用数据表明它对主要垃圾回收的影响。注意:此回收器与 -J-XX:+UseConcMarkSweepGC 是互斥的 。可以在性能 Web 站点上找到支持使用此算法的度量数据。

jvm

相关推荐