最大化 AIX 上的 Java 性能,第 2 部分: 速度需求
2008-11-10 08:26:34 来源:WEB开发网对于属于 CPU 密集型从而希望最小化后台处理的应用程序,可以考虑 技巧 CPU007:禁用显式的 System.gc() 调用、技巧 CPU008:使用小型堆和 技巧 CPU009:消除“标记堆栈溢出”。正如前面提到过的,您应该将 技巧 CPU008:使用小型堆与内存特征结合起来考虑。
对于非 CPU 密集型应用程序,强烈建议考虑 技巧 CPU002:使用并发 GC。这将通过减少 GC 周期到达时的总体暂停时间来获益。
定义良好的引用局域性
如果应用程序有一些经常执行的方法,而其他方法则很少执行,则 技巧 CPU003:在第一次调用时编译所有内容将是非常好的性能增强方法。
并行度
如果应用程序运行多个线程以完成工作,则会从具有大量 CPU 的系统中获益。对于动态分区,添加更多 CPU 会立即表现出改进,因为可以立即将 Java 线程调度到新添加的 CPU 上。技巧 CPU005:使用大量线程、技巧 CPU006:减少锁争用和 技巧 CPU011:超过 24 个 CPU 的系统讨论了可尝试的其他优化。
但是如果应用程序只有单个执行线程,则会受到单个 CPU 的处理能力的限制。在此情况下,您可能希望尝试 技巧 CPU002:使用并发 GC 和 技巧 CPU010:单 CPU 系统。如果您要尝试在某个系统上运行多个 JVM 实例(例如,在集群环境中),则 技巧 CPU010:单 CPU 系统特别有帮助。
一般技巧集合
下文将把 Java 的命令行参数(在 class/jar 文件名称之前指定)称为“开关”。例如,命令行“java -mx2g hello”具有单个开关“-mx2g”。
技巧 CPU001:快速启动应用程序
可以使用非标准开关 -Xquickstart 缩短应用程序的启动时间。此开关将 JIT 优化级别降至最低,并且仅当适用的方法再次变得活动时才重新应用优化。对于其执行不是集中于少数方法的应用程序,这样做的结果是启动时间要快得多。
更多精彩
赞助商链接