获取java进程的堆内存镜像_jmx-monitor: 用于连接Java.exe 进程,获取MXBean,可以用于监控JVM中的进程数量和堆内存使用情况...

jmx-monitor

介绍

用于连接Java.exe 进程,获取MXBean,可以用于监控JVM中的进程数量和堆内存使用情况

目录说明

└─com

└─unitfen

└─jmx

├─client

│ ├─entity

│ └─impl

└─mxbean

└─creator

client目录是存放Jmx连接相关的一些文件

entity 是用于返回MXBean时返回数据的实体类

impl 是放服务类的

mxbean.creator 是用于获取MXBean时的一些策略类

安装教程

这是一个jar包,依赖于jdk中的tool.jar

使用IDE开发工具 打包成jar包即可

使用说明

先导入本jar包到目标工程中

使用方法可以参照com.unitfen.jmx.Main 中main方法的测试代码

MXBeanServiceTest mxBeanService= new MXBeanServiceTest(pid);

System.out.println(mxBeanService.getMemoryUsageCount());

System.out.println(mxBeanService.getThteadCount());

pid为本地的java.exe进程号

com.unitfen.jmx.client.impl.MXBeanServiceTest是写的样例

如果需要扩展的话可以参考该类。

扩展说明

1.先定义对应的MxBean类

这个是java 中和jmx服务的基本操作 ,

可以参照 java.lang.management.MemoryMXBean

2.再定义MxBean类的创建策略,取名为*Creator

本质上就是将MXBean类和Creator绑定了,作为一种策略传参给jmxc.MXBeanCreator()方法来获取MXBean.

可以参照 com.unitfen.jmx.mxbean.creator的格式 如下 :

public class MemoryMXBeanCreator extends MXBeanCreator{

@Override

public Class> getMXBeanClass() {

return MemoryMXBean.class; //第一步中定义的mxbean类

}

@Override

String getMxbeanName() {

return "java.lang:type=Memory";//这个是mxbean类的重要参数ObjectName

}

}

3.连接jmx和取得mxbean

以获取进程信息为例

public ThreadEntity getThteadCount(){

//先根据进程pid连接到jmx

JMXConnectorService jmxc = JMXConnectorService.getInstance(pid);

try {

// 根据传入的第二步中定义的creator类 获取到Mxbean

ThreadMXBean threadInfo = jmxc.MXBeanCreator(new ThreadMXBeanCreator());

//最后是做了一个数据转为实体类的 (可忽略)

return new ThreadEntity(threadInfo);

}catch (Exception es){

return null;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值