本文将为您提供有关如何计算在IBM AIX 5.3+ OS上运行的Java VM进程的Java进程大小内存占用量的快速参考指南。
这是我关于该主题的原始文章的补充文章: 如何在AIX上监视Java本机内存 。 我强烈建议所有参与生产支持或AIX上部署Java应用程序开发的人员阅读此书。
为什么这些知识很重要?
从我的角度来看,关于操作系统如何管理JVM进程的内存分配的基本知识非常重要。 我们经常忽略此监视方面,而只关注Java堆本身。
根据我的经验,从Java堆本身可以观察到大多数与Java内存相关的问题,例如垃圾回收问题,泄漏等。但是,我有信心,您将来会遇到涉及本机内存问题或OS内存挑战的情况。 正确了解操作系统和虚拟内存管理对于正确的根本原因分析,建议和解决方案至关重要。
AIX内存与页面
正如您从我以前的文章中可能已经看到的那样 ,AIX虚拟内存管理器(VMM)负责管理来自系统及其应用程序的内存请求。
实际的物理内存以页为单位进行转换和分区; 在需要时分配在物理RAM中或存储在磁盘上。 每个页面的大小可以为4 KB(小页面),64 KB(中页面)或16 MB(大页面)。 通常,对于64位Java进程,您会看到以上所有内容的混合。
topas命令呢?
在AIX上支持应用程序时,通常的反射是运行topas命令,类似于Solaris top。 在下面找到AIX 5.3的输出示例:
如您所见,topas命令对于清晰了解内存利用率不是很有用,因为它没有提供分析所需的细分视图。 粗略了解调页空间的使用情况仍然很有用,它可以使您快速了解最重要的“分页空间”使用者进程。 通过ps aux命令可以实现相同的目的。
AIX OS命令解救:svmon
到目前为止,AIX svmon命令是我更喜欢深入了解Java进程内存利用率的命令。 这是一个非常强大的命令,类似于Solaris pmap 。 它允许您监视当前内存“页面”分配以及每个段,例如Java Heap与本机堆段。 分析svmon输出将使您可以计算每种页面类型(4 KB,64 KB和16 MB)的内存占用量。
现在在下面找到一个真实的示例,它将使您了解如何完成计算:
#具有-Xms2048m和-Xmx2048m(2 GB Java堆)的64位JVM
#命令:
svmon –P <Java PID>
如您所见,我们发现Java进程大小的总大小为2.2 GB,与当前Java堆设置一致。 您应该能够轻松地从AIX环境中执行相同的内存占用量分析
我希望本文能帮助您了解如何在AIX OS上计算Java进程大小。 请随时发表任何评论或问题。
参考: IBM AIX:来自Java EE支持模式和Java教程博客的JCG合作伙伴 Pierre-Hugues Charbonneau的Java进程大小监视 。
翻译自: https://www.javacodegeeks.com/2012/11/ibm-aix-java-process-size-monitoring.html