ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Java内存监控方法

2019-09-02 18:04:28  阅读:348  来源: 互联网

标签:JMX management Java 监控 sun Dcom 内存 MBean jmxremote


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的信息是可靠的,所以会暂停应用, 线上系统慎用。

标签:JMX,management,Java,监控,sun,Dcom,内存,MBean,jmxremote
来源: https://www.cnblogs.com/moshimowang/p/11447981.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有