[HP-UX] 调整 HP JVM 的垃圾回收器
HP JVM 依靠分代垃圾回收来实现最佳性能。下列命令行参数对于调整垃圾回收来说非常有用。
· -Xoptgc
此设置针对包含许多短生命周期对象的应用程序优化 JVM。如果未指定此参数,则 JVM 通常执行大型(全面)垃圾回收。全面垃圾回收会花费几秒钟时间,这将显著影响服务器性能。
缺省值: |
off |
建议值: |
on |
用法: |
-Xoptgc 启用优化的垃圾回收。 |
· -XX:SurvivorRatio
将
Java 堆划分为旧对象(长生命周期对象)区域和新对象区域。新对象区域进一步细分为两部分,第一部分用于分配给新对象(初始区域),第二部分存放那些经过其前几
次垃圾回收之后、但在被提升为旧对象之前仍在使用中的新对象(幸存者空间)。幸存者比率是堆的新对象区域中初始区域与幸存者空间的比率。增大此设置将针对 需要创建大量对象但仅保留少量对象的应用程序优化 JVM。
缺省值: |
32 |
建议值: |
16 |
用法: |
-XX:SurvivorRatio=16 |
· -XX:PermSize
为永久生成对象保留的堆区域存储 JVM 的所有反射数据。对于动态地装入和卸载大量类的应用程序来说,应该增大此大小以优化它们的性能。通过将此参数指定为 128 兆字节,可以消除增大此部分堆所需的开销。
缺省值: |
0 |
建议值: |
128 兆字节 |
用法: |
-XX:PermSize= |
· -XX:+ForceMmapReserved
缺省情况下,Java 堆以“惰性交换”方式进行分配。在此方式下,将根据需要来分配内存页,这样可以节省交换空间,但是也将强制使用 4KB 页。在大型堆系统中,这种内存分配方式允许堆包含数以十万计的页。此命令禁用“惰性交换”并允许操作系统使用较大的内存页,从而优化对构成 Java 堆的内存的访问。
缺省值: |
off |
建议值: |
on |
用法: |
-XX:+ForceMmapReserved 将禁用“惰性交换”。 |
· -Xmn
此设置控制允许新生成的对象在堆中耗用的空间量。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐量。此参数的缺省设置通常过低,这将导致执行大量的小型垃圾回收操作。
缺省值: |
没有缺省值 |
建议值: |
大约整个堆大小的 3/4 |
用法: |
-Xmn |
· -Xnoclassgc
缺省情况下,当一个类没有任何活动实例时,JVM 就会从内存中卸载该类,但是这样会使性能下降。如果关闭类垃圾回收,就可以消除由于多次装入和卸载同一个类而造成的开销。
如果不再需要某个类,则该类在堆中所占用的空间通常将用于创建新对象。但是,如果应用程序通过创建类的新实例来处理请求,并且该应用程序的请求是随机出现的,则可能会发生以下情况:先前请求者完成后,正常的类垃圾回收将通过释放这个类占用的堆空间来清除这个类,但当下一个请求出现时,又必须将这个类重新实
例化。在这种情况下,您可能想使用此选项来禁用类垃圾回收。
缺省值: |
启用类垃圾回收 |
建议值: |
禁用类垃圾回收 |
用法: |
Xnoclassgc 禁用类垃圾回收 |