Java內存監控方法


1、JMX功能

1.1 介紹

JMX(Java Management Extensions,即Java管理擴展)是一個為應用程序、設備、系統等植入管理功能的框架。JMX可以跨越一系列異構操作系統平台、系統體系結構網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。

所謂JMX,是Java Management Extensions(Java管理擴展)的縮寫,是一個為應用程序植入管理功能的框架。用戶可以在任何Java應用程序中使用這些代理和服務實現管理。

JMX架構圖:

 

三層結構

1、 基礎層:主要是Mbean,被管理的java bean

Mbean分為如下四中

類型

描述

standard MBean

這種類型的MBean最簡單,它能管理的資源(包括屬性,方法,時間)必須定義在接口中,然后MBean必須實現這個接口。它的命名也必須遵循一定的規范,例如我們的MBean為Hello,則接口必須為HelloMBean。

dynamic MBean

必須實現javax.management.DynamicMBean接口,所有的屬性,方法都在運行時定義

model MBean

與標准和動態MBean相比,你可以不用寫MBean類,只需使用javax.management.modelmbean.RequiredModelMBean即可。RequiredModelMBean實現了ModelMBean接口,而ModelMBean擴展了DynamicMBean接口,因此與DynamicMBean相似,Model MBean的管理資源也是在運行時定義的。與DynamicMBean不同的是,DynamicMBean管理的資源一般定義在DynamicMBean中(運行時才決定管理那些資源),而model MBean管理的資源並不在MBean中,而是在外部(通常是一個類),只有在運行時,才通過set方法將其加入到model MBean中。

2、適配層:MbeanServer,提供對資源的注冊和管理

3、接入層: 提供遠程訪問的入口

JMX最常見的場景是監控Java程序的基本信息和運行情況,任何Java程序都可以開啟JMX,然后使用JConsole或Visual VM進行預覽。

1.2 添加JMX功能

 1、wrapper程序添加JMX功能。

在wrapper.conf配置文件中添加如下配置:

local.jmx.port=39900

wrapper.java.additional.2=-Djava.rmi.server.hostname=192.168.1.75

wrapper.java.additional.3=-Dcom.sun.management.jmxremote.port=39900

wrapper.java.additional.4=-Dcom.sun.management.jmxremote.ssl=false

wrapper.java.additional.5=-Dcom.sun.management.jmxremote.authenticate=false

 2、一般java程序添加JMX功能。

    在java程序的命令后面指定如下指令

-Djava.rmi.server.hostname=127.0.0.1

-Dcom.sun.management.jmxremote.port=1000

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

 

3、tomcat添加JMX功能。

 

CATALINA_OPTS="-Dcom.sun.management.jmxremote

-Djava.rmi.server.hostname=ip -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

 

 

2、Jconsole、jvisualvm工具使用

2.1 jconsole工具使用

1、遠程連接進程

 

2、連接成功后可以觀察概覽、內存、線程、類、VM概要、MBean

 

3、  可以查看不同區的內存使用情況

 

2.2 jvisualvm工具使用

1、遠程連接進程

 

2、登錄成功可以查看概述、監視、線程、抽樣器。

 

3、監視:CPU、內存、類、線程

 

 

4、通過抽樣器可以做內存鏡像

 

 

 

生成的文件在遠程服務器上查看:

 

 

 

3、解析堆文件

3.1、使用jhat命令解析

jhat -J-mx10240m heapdump-1563861495449.hprof

   

   出現如下信息,表明讀取鏡像文件成功

 

3.2、頁面展示

使用UI輸入如下地址:http://192.168.1.75:7000/

 

 

 

 

通過頁面可以查看:

(1)      顯示出堆中所包含的所有的類

(2)       從根集能引用到的對象

(3)       顯示平台包括的所有類的實例數量

(4)       堆實例的分布表

(5)       執行對象查詢語句

 

 

 

4、JVM性能調優監控工具

jps、jstack、jmap、jhat、jstat、hprof

jmap這個命令執行,JVM會將整個heap的信息dump寫入到一個文件,heap如果比較大的話,就會導致這個過程比較耗時,並且執行的過程中為了保證dump的信息是可靠的,所以會暫停應用, 線上系統慎用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM