最大化 AIX 上的 Java 性能,第 2 部分: 速度需求
2008-11-10 08:26:34 来源:WEB开发网如果应用程序能够承受启动时间的轻微延迟,您应该参阅 技巧 CPU003:在第一次调用时编译所有内容和 技巧 CPU008:使用小型堆。对于具有明显的“初始化”和“运行”阶段的长时间运行的应用程序,技巧 CPU003:在第一次调用时编译所有内容是非常便利的。
交互级别
基于您的代码是否为计算密集型,JVM 的响应能力可以具有从非常关键到不相关的不同重要性。如果您要尝试优化的 JVM 在运行 GUI,则长时间的 GC 暂停将是不可接受的。与此同时,如果您在运行多个允许负载共享的 JVM 实例,或者如果正在执行批处理模式的处理,则长时间的暂停也许是可接受的。
对于无法承受长时间暂停的应用程序,请参见 技巧 CPU002:使用并发 GC、技巧 CPU004:完全去掉 GC、技巧 CPU007:禁用显式的 System.gc() 调用、技巧 CPU008:使用小型堆、技巧 CPU009:消除“标记堆栈溢出”和 技巧 CPU012:避免堆大小调整。技巧 CPU004 在大多数情况下仅适用于短时间运行的应用程序。请注意,必须将技巧 CPU008 与应用程序的内存特征结合起来考虑,因为如果应用不当,可能会带来相反的效果。
对于能够承受更长时间暂停的应用程序,应该考虑 技巧 CPU003:在第一次调用时编译所有内容。请注意,长时间暂停在大多数情况下都不是好事情,因此即使应用程序能够承受,也应该考虑并纠正该问题,因为您无法通过错误配置的 JVM 实例获得任何好处。
CPU 消耗
如果您在运行其线程数量超过已安装的 CPU 数量的应用程序,则观察到总体 CPU 利用率保持在 90% 或更高是很正常的,任何类型的后台处理都会损害您的应用程序的吞吐量。另一方面,如果您的应用程序是服务器,并且其线程在大多数时间都处于睡眠状态,只有在响应传入的请求时才会醒来,那么您也许能够使用后台处理来减小长时间 GC 暂停所导致的影响。
更多精彩
赞助商链接