最大化 AIX 上的 Java 性能,第 2 部分: 速度需求
2008-11-10 08:26:34 来源:WEB开发网export JITC_COMPILEOPT=FORCE(0){com/myapp/special}{SpecialMethod}
此示例仅在第一次加载时编译这个特定的方法。除了 *(表示零个或多个字符)以外,还可以使用“?”作为单个字符的通配符。
可以使用以下语法指定多个类和/或方法:
export JITC_COMPILEOPT=FORCE(0){class1}{method1}{class2}{method2}
确保用文档清楚地说明这是一个优化而不是修复!
请注意:应用程序的启动时间可能由于此设置而延长。
技巧 CPU004:完全去掉 GC
可以将启动和最大堆大小设置为非常大的值,以便在运行期间不会发生任何分配故障。应该为这些运行启用 verbosegc,以确保该策略有效!
请注意:当 GC 发生时,其周期可能会相当长,因此只能在极少的情况下使用此技巧。
技巧 CPU005:使用大量线程
对于扩展到更大数量的线程,您应该使用 -Xss 开关来指定一个小于缺省值(通常为 512 K,但是可能随 Java 版本而异)的值。这将使您可以扩展到更大数量的线程,同时减小应用程序的本机内存占用空间。
请注意:如果堆栈大小太小,您可能会遇到堆栈溢出 (Stack Overflow) 异常。
技巧 CPU006:减少锁争用
如果应用程序体系结构允许的话,您可以尝试运行多个 Java 实例,以减少锁争用。这是通过允许此类配置的应用程序服务器来促进的;例如,WebSphere 允许您在同一台物理计算机上使用多个节点。
请注意:这只能掩盖问题;您应该复查导致过多锁争用的代码部分。可以使用 tprof 或 Java 分析来定位需要复查的区域。
技巧 CPU007:禁用显式的 system.gc() 调用
使用非标准开关 -Xdisableexplicitgc,您可以减少对删除代码中的 System.gc() 调用的需要。删除这些调用将把 GC 管理工作返还给 JVM。
更多精彩
赞助商链接