本文將為您提供有關如何計算在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