记录点点滴滴

JVM Heap的设置

上一篇 / 下一篇  2009-11-11 15:06:38 / 个人分类:JVM

1、Sun JDK、BEA JRockit、HP Java SDK
    建议:堆的最小值等于最大值
 
 2、IBM Java SDK
    建议:堆的最小值不要等于最大值
 
 3、-Xms
    控制Java堆的初始大小。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。
 4、-Xmx
    控制Java堆的最大大小。增大此参数将增加可供应用程序服务器使用的内存量,并且将降低垃圾回收频率。增大此参数可以缩短服务器响应时间并提高吞吐量。但是,增大此参数也将延长所执行的垃圾回收的持续时间。此参数不应大于可供应用程序服务器实例使用的系统内存量。如果将此参数增大到超出可用系统内存量,将导致发生系统页面调度,从而导致性能显著下降。
 5、-Xlp
    此设置与IBM JVM配合使用,以使用大页16MB来分配堆。然而,如果使用此设置,则必须将操作系统配置为支持大页。使用大页可以降低CPU跟踪堆内存时的开销,并且还允许创建较大的堆。
 6、-Xlp64k
    此参数与IBM JVM配合使用,以使用64K字节页大小来分配堆。由于硬件效率与页大小成正比。因此,对应用程序所需的内存使用此虚拟内存页大小可以提高该应用程序的性能和吞吐量。
 
调整IBM JVM垃圾回收
 7、-Xgcpolicy(default=optthuput)
   从Java 5.0开始,IBM JVM提供了四种垃圾回收策略。

    * optthruput:缺省策略,它提供了高吞吐量,但垃圾回收暂停时间较长。在垃圾回收期间,将停止所有应用程序线程,以便进行标记、清理并根据需要进行压缩。
    * optavgpause:通过在应用程序执行期间执行垃圾回收的标记和清理阶段来缩短垃圾回收暂停时间。会对整体吞吐量产生轻微影响。
    * gencon:IBM JVM的分代垃圾回收器。分代模式尝试实现高吞吐量同时缩短垃圾回收暂停时间。为了实现此目标,将堆分成新区域和旧区域。长生命周期对象将被提升到旧空间,而短生命周期对象将在新空间中被迅速地作为垃圾回收。
    * subpool:提高多处理器系系统(通常使用8个以上地处理器)的性能。此策略仅适用于IBM pSeries和zSeries处理器。
    * gcpolicy=optthruput会禁用并发标记。
    * gcpolicy=optavgpause会使用缺省值来启用并发标记。此参数将减少由正常垃圾回收所引起地应用程序响应时间不规律情况。

 8、-Xnoclassgc(default=enable,recommend=false)

    缺省情况下,当一个类没有任何活动实例时,JVM就会从内存中卸载该类。卸载类会使性能下降。如果关闭类垃圾回收,就可以消除由于多次装入和卸载同一个类而造成地开销。

 

调整Sun JVM垃圾回收器

  9、-XX:SurvivorRatio(default=32,recommend=16)

     将Java堆分为旧对象(长生命周期对象)区域和新对象区域。新对象区域进一步细分为两部分,第一部分用于分配给新对象(称为初始区域),第二部分存放那些经过其前几次垃圾回收之后、但在被提升为旧对象之前仍在使用中的新对象(称为幸存者空间)。幸存者比率是堆的新对象区域中初始区域与幸存者空间的比率。增大此参数将针对需要创建大量对象但仅保留少量对象的应用程序优化JVM。与其他应用程序服务器相比,WAS实例会生成更多中等生命周期对象和长生命周期对象。

  10、-XX:PermSize(recommend=128m)

  为永久生成对象保留的堆区域存储JVM的所有反射数据。对于动态地装入和卸载大量类的应用程序来说,应该增大此大小以优化它们的性能。

  11、-Xmn(recommend=整个堆大小的1/4)

  此参数控制允许新生成的对象在堆中耗用的空间量。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。此参数的缺省设置通常过低,这将导致执行大量的小型垃圾回收操作。如果将此参数设置过高,可能会导致JVM仅执行大型(全面)垃圾回收,这些垃圾回收操作通常会耗时几秒钟,这将严重影响服务器的整体性能。必须保持将此参数设置为小于整个堆大小的一半,以避免这种情况出现。

  12、-Xnoclassgc

 

调整HP JVM垃圾回收器

  13、-Xoptgc(default=off,recommend=on)

  此参数针对包含许多短生命周期对象的应用程序优化JVM。如果未指定此参数,则JVM通常执行大型(全面)垃圾回收。

  14、-XX:SurvivorRatio(default=32,recommend=16)

  15、-XX:PermSize(default=0,recommend=128m)

  16、-XX:+ForceMmapReserved(default=off,recommend=on)

  此命令禁用惰性交换并允许操作系统使用较大的内存页,从而优化对构成Java堆的内存的访问。缺省情况下,将惰性交换空间分配给Java堆。因为内存页是根据需要分配的,所有惰性交换功能能够节省交换空间。但是,惰性交换功能强制使用4KB页。在大型堆系统中,这种内存分配方式允许堆包含数以十万计的页。

  17、-Xmn(recommend=整个堆大小的3/4)

  18、虚拟页大小(default=4MB,recommend=64MB)

  通过将Java虚拟机的指令页大小和数据页大小设置为64MB,可以提高性能。

  chatr +pi64M +pd64M /opt/WebSphere/AppServer/java/bin/PA_RISC2.0/native_threads/java

  19、-Xnoclassgc


TAG:

 

评分:0

我来说两句

Open Toolbar