WEB开发网
开发学院操作系统Linux/Unix 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是... 阅读

最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好

 2008-11-10 08:26:39 来源:WEB开发网   
核心提示:引言这是由五部分组成的有关 AIX 上的 Java 性能优化的系列中的第三篇文章,强烈建议您在进一步继续之前阅读本系列中的第 1 部分(如果您还没有这样做的话),最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好,本文集中于涉及各种类型的内存结构(Java 堆、本机堆、堆栈)的优化,并研究用于优化系统以

引言

这是由五部分组成的有关 AIX 上的 Java 性能优化的系列中的第三篇文章。强烈建议您在进一步继续之前阅读本系列中的第 1 部分(如果您还没有这样做的话)。

本文集中于涉及各种类型的内存结构(Java 堆、本机堆、堆栈)的优化,并研究用于优化系统以进行大小调整的方法。

您应该查看第一部分,以了解适用于大多数情况的一般技巧。我们还提供了对于内存瓶颈检测和研究非常有用的工具的快速参考。下一部分将描述各种类型的应用程序以及如何优化它们。此讨论将利用您的应用程序知识来决定哪些技巧最适合您。第三部分将描述各种技巧。本文在结束时将讨论一下本系列中的下一篇文章。

内存瓶颈

本文讨论如何使您的应用程序扩展到更多数量的线程或具有更大的堆,或者同时实现这两个目的。您可能还希望通过迫使应用程序以受约束的方式使用资源,从而使其更加“文明”。在系统由多个应用程序共享的环境中,这是特别重要的。

当 AIX Java 应用程序尝试扩展时,存在若干可能会产生影响的资源瓶颈。Java 堆只是其中之一,并且在大多数情况下,您只需切换到更大的堆大小即可向上扩展。但是还存在另外三个内存方面,它们对于确定 Java 应用程序的内存占用空间和可伸缩性具有重要的影响。

除 Java 堆以外的第一个重要内存方面是本机堆(native heap),文章“Getting more memory in AIX for your Java applications” 描述了如何监视本机堆和调整其大小。Java 堆由垃圾收集器(Garbage Collector)管理,但是垃圾收集器不会对本机堆执行任何操作。因此,如果您看到本机堆稳定地增加,可能是由于不匹配的 JNI 分配(举例而言)所导致的。

第二个方面是用 -Xss 指定的本机堆栈(native stack)。这是针对每个线程分配的,并且不基于具体的使用情况,因此如果计划运行一百个线程,则要在指定 -Xss2m 前慎重考虑;它将消耗 200 MB 的本机内存,每个线程消耗 2 MB。在运行更多数量的线程时,这尤其成为一个限制因素,建议的解决办法是使用较小的值而不是使用缺省值。与 JVM 配套的 SDK 指南中提供了有关此主题的更多信息。

1 2 3 4 5 6  下一页

Tags:最大化 AIX Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接