JMX入门代码




package org.jmx.monitor.local.test;

import java.lang.management.ClassLoadingMXBean;
import java.lang.management.CompilationMXBean;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.util.List;

import javax.management.MBeanServer;

/**
* @company www.changyou.com
* @author wangzhen
* @date 2011-10-26
*/
public class TestJVM {

public static void main(String[] args) {

// getClassInfo();
// getComplaint();
// getMemory();
//getThread();
//getRuntimeJVM();
//getOperatingSystem();
//getMemoryPoolMXBeans();
getGarbageCollectorMXBeans();
//getMBeanServer();
}

/**
* class信息
*/
public static void getClassInfo() {

ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();

System.out.println("正在运行class数量:" + bean.getLoadedClassCount());
System.out.println("一共加载class数量:" + bean.getTotalLoadedClassCount());
System.out.println("已经卸载class数量:" + bean.getUnloadedClassCount());
}

/**
* 编译信息
*/
public static void getComplaint() {

CompilationMXBean bean = ManagementFactory.getCompilationMXBean();

System.out.println("虚拟机编译器名称:" + bean.getName() + ",编译时间:"
+ bean.getTotalCompilationTime());

}

/**
* 内存信息
*/
public static void getMemory() {

MemoryMXBean bean = ManagementFactory.getMemoryMXBean();

System.out.println("返回其终止被挂起的对象的近似数目:"
+ bean.getObjectPendingFinalizationCount());

MemoryUsage heapUserage = bean.getHeapMemoryUsage();

System.out.println("堆内存____Java 虚拟机最初从操作系统请求用于内存管理的内存量:"
+ heapUserage.getInit() / 1024);
System.out.println("堆内存____已使用的内存量:" + heapUserage.getUsed() / 1024);
System.out.println("堆内存____已提交给 Java 虚拟机使用的内存量:"
+ heapUserage.getCommitted() / 1024);
System.out.println("堆内存____内存管理的最大内存量:" + heapUserage.getMax() / 1024);

MemoryUsage noHeapUserage = bean.getNonHeapMemoryUsage();

System.out.println("栈内存____Java 虚拟机最初从操作系统请求用于内存管理的内存量:"
+ noHeapUserage.getInit() / 1024);
System.out.println("栈内存____已使用的内存量:" + noHeapUserage.getUsed() / 1024);
System.out.println("栈内存____已提交给 Java 虚拟机使用的内存量:"
+ noHeapUserage.getCommitted() / 1024);
System.out
.println("栈内存____内存管理的最大内存量:" + noHeapUserage.getMax() / 1024);

}

/**
* 获取线程信息
*/
public static void getThread() {

ThreadMXBean bean = ManagementFactory.getThreadMXBean();

System.out.println("总共线程数:"+bean.getThreadCount());

ThreadInfo[] threadInfo = bean.dumpAllThreads(true, true);

for (int i = 0; i < threadInfo.length; i++) {

System.out.println("线程名称:" + threadInfo[i].getThreadId() + ",线程Id:"
+ threadInfo[i].getThreadId() + ",线程状况:"
+ threadInfo[i].getThreadState());
StackTraceElement[] stackElement = threadInfo[i].getStackTrace();
for (int j = 0; j < stackElement.length; j++) {

System.out.println("class名称:"+stackElement[j].getClassName() + ",文件名称:"
+ stackElement[j].getFileName() + ",行数:"
+ stackElement[j].getLineNumber() + ",方法名:"
+ stackElement[j].getMethodName());

}

}

System.out.println("死锁状况:"+bean.findDeadlockedThreads());
System.out.println("死锁周期:"+bean.findMonitorDeadlockedThreads());
System.out.println("JVM从启动开始最大线程数量:"+bean.getPeakThreadCount());


}
/*
* 运行时JVM信息
*/
public static void getRuntimeJVM(){


RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();

System.out.println("虚拟机名称:"+bean.getName());
System.out.println("引导类加载器用于搜索类文件的引导类路径:"+bean.getBootClassPath());
System.out.println("统类加载器用于搜索类文件的 Java 类路径:"+bean.getClassPath());
System.out.println("Java 库路径:"+bean.getLibraryPath());
System.out.println("Java 虚拟机的启动时间:"+bean.getStartTime()/1000+"s");
System.out.println("Java 虚拟机的正常运行时间:"+bean.getUptime()/1000+"s");

}

/**
* 操作系统信息
*/
public static void getOperatingSystem(){

OperatingSystemMXBean bean = ManagementFactory.getOperatingSystemMXBean();

System.out.println("操作系统架构:"+bean.getArch());
System.out.println("JAVA虚拟机可以使用处理器数量:"+bean.getAvailableProcessors());
System.out.println("操作系统名称:"+bean.getName()+",操作系统版本号:"+bean.getVersion());
System.out.println("最后一分钟内系统加载平均值"+bean.getSystemLoadAverage());

}
/**
* 虚拟机中的 MemoryPoolMXBean 对象列表
*/
public static void getMemoryPoolMXBeans(){

List<MemoryPoolMXBean> beans = ManagementFactory.getMemoryPoolMXBeans();

for(int i = 0 ; i < beans.size() ; i++){

MemoryPoolMXBean bean = beans.get(i);

System.out.print("内存池名称:"+bean.getName()+",");
System.out.print("当前的内存使用量:"+bean.getUsage()+",");
System.out.print("峰值内存使用量:"+bean.getPeakUsage()+",");
if(bean.isUsageThresholdSupported()){
System.out.println("此内存池的使用量阈值"+bean.getUsageThreshold());
}
}

}
/**
* 获取垃圾回收MXBeans信息
*/
public static void getGarbageCollectorMXBeans(){

List<GarbageCollectorMXBean> beans = ManagementFactory.getGarbageCollectorMXBeans();

for(int i = 0 ; i < beans.size() ; i++){

GarbageCollectorMXBean bean = beans.get(i);

System.out.println("回收器名称:"+bean.getName()+",回收期次数"+bean.getCollectionCount()+",回收时间"+bean.getCollectionTime()/1000);

String[] poolNames = bean.getMemoryPoolNames();

for(int j = 0 ; j < poolNames.length; j++){
System.out.print(poolNames[j]);
}
System.out.println();
}




}

/**
* MbeanServer信息
*/
public static void getMBeanServer(){

MBeanServer bean = ManagementFactory.getPlatformMBeanServer();





}



}


JMX实现远程服务器Tomcat系统监控之一 JMX实现远程服务器端的包括CPU占用率,堆信息,非堆信息,类加载,内存使用情况等统计。 阅读详情

相关推荐

【kafka】java使用jmx 监控Kafka

1.概述 想使用java jmx监控kafka,关于jmx相关的概念请参考 【Java】java jmx 入门案例 进阶版参考:【Spring】SpringBoot 如何使用JMX 2.kafkal开启Jmx 首先开启kafka端口 linux下 if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" export JMX_PORT="9999" fi window下参考“:【Kafka】.

九师兄 1680

jmx基本使用

翻到了之前的JMX知识,看jmx能帮你采集哪些基本信息~ package com.test; ackage com.ilucky.test.jvm.jmx.one; import java.io.IOException; import java.lang.management.ClassLoadingMXBean; import java.lang.management.CompilationM...

weixin_42263498的博客 691

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从...

qryzhfj的博客 2188

HBase 集群监控

为什么需要监控?为了保证系统的稳定性,可靠性,可运维性。 1. 掌控集群的核心性能指标,了解集群的性能表现。 2. 集群出现问题时及时报警,便于运维同学及时修复问题。 3. 集群重要指标值异常时进行预警,将问题扼杀在摇篮中,不用等集群真正不可用时才采取行动。 4. 当集群出现问题时,监控系统可以帮助我们更快的定位问题和解决问题如何构建 HBase 集群监控系统?公司有自己的监控系统,我们

http://www.54tianzhisheng.cn/ 2598

D触发器(D Flip-Flop)与D锁存器(D Latch)

在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。

weixin_65190179的博客 9167

深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用

深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用前言一、Batch Normalization是什么?1.1 Internal Covariate Shift1.2 Internal Covariate Shift 带来的影响1.3 如何减缓 Internal Covariate Shift 问题带来的影响白化(Whitening)白化存在的问题二、Batch Normalization2.1 传统 Normalization2.2 改进

一扣解千愁的博客 4297

JMX监控Zookeeper状态Java API

JMX监控Zookeeper状态的Java API

SouthPark的专栏 5009

【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试

本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、

2501_92897788的博客 2283

jmx入门 备忘

http://www.ibm.com/developerworks/cn/java/j-lo-jse63/ http://jackycheng2007.iteye.com/blog/1478182

菜皮的默默倾诉 384

CoppeliaSim和Python进行无人机联合仿真

CopeeliaSim和Python进行无人机轨迹跟踪联合仿真。首先建立起CoppeliaSim和Python的连接,其次在Python中生成轨迹,CoppeliaSim仿真环境中的无人机进行跟踪,并绘制出轨迹曲线,有每一步详细的教学。

加斯顿工程师的博客 987

SAP录入总账凭证报错 公司代码未被分配给国家或用于计算程序的国家消息号 FF703

SAP系统报错FF703的解决方案:当公司代码未分配国家或未配置计税程序时,会导致增值税计算失败。处理方法:1)通过OX02检查公司代码国家字段;2)使用OBBG为国家分配计税程序(如TAXCN)。配置步骤:1)SPRO分配公司代码到国家;2)OBBG设置国家对应的计税程序。注意事项:历史数据需清理才能修改国家字段,不同账簿可配置不同计税程序。完成配置后即可正常处理含税凭证。

金牌架构师 557

JMX代码入门(一)

package com.fanshadoop; /** * * standard MBean是通过接口定义的,且接口名称的后缀为"MBean" * 1)get方法定义了MBean的成员变量是可读权限 * 2)set方法定义了MBean的成员变量是可写权限 */ public interface HelloWorldMBean { public void setGreeting( St

Java&&大数据专栏 1117

系规备考论文:论IT服务规划设计

系规备考论文:论IT服务规划设计

liuxu324的博客 1144

JMX代码入门(二)

package com.fanshadoop; import javax.management.Notification; import javax.management.NotificationBroadcasterSupport; /** * JMX notification是用来从MBean和agent发送信息到其他对象(已经注册接受信息)的Java对象。 * 对接收事件感兴趣的是no

Java&&大数据专栏 1045

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。

数据知道的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jmx入门代码

[code="java"] package org.jmx.monitor.local.test; import java.lang.management.ClassLoadingMXBean; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageColle...

zyslovely的博客 140

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【JMX】JAVA监控的基石

一文快速讲解一切JAVA监控的基石——JMX。

BugMan的博客 4136

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JMX的快速入门与使用+使用JMX Exporter监控+集成OpenTelemetry

文章目录JMX应用场景JMX使用定义一个MXBean实现该MXBean将MXBean注册到JMX中去使用Jconsole监控JMX官方文档源码地址 JMX应用场景 用来监控JVM内各种对象的信息。一个经典场景就是,某一天我们忽然被前方告知,业务大面积瘫痪,这时经过排查,发现由于bug导致数据库连接使用完了没有被释放,导致后续业务没有可用的数据库连接而超时报错。 假如我们使用JMX来监控我们系统中数据库连接池的信息,当数据库连接池出现短时间内连接被大量使用,这个时候可以搭配我们的监控报警系统(如Nagios)

本博客已迁移到 https://jacksparrow414.com 1万+

JMX使用入门

简述 本文是关于JMX(Java Management Extensions)的使用文档。 关于JMX 所谓JMX,是Java Management Extensions(Java管理扩展)的缩写,是一个为应用程序植入管理功能的框架。JMX有以下用途: 监控应用程序的运行状态和相关统计信息。 修改应用程序的配置(无需重启)。 状态变化或出错时通知处理。 举个例子,我们可以通过jconsole监控应用程序的堆内存使用量、线程数、类数,查看某些配置信息,甚至可以动态地修改配置。另外,有时..

DH719491759的博客 8279

JMX的使用

JMX是Java Management Extention的缩写,出发点是让外部通过属性/方法来读取或设置程序状态。对于提供对外服务的程序来说,天生就有这样的能力,Web程序通过HTTP接口对外暴露,RPC应用通过RPC接口暴露。不过带来的问题,一是依赖环境,不同的环境能力不同;二是需要单独处理安全性问题,尤其是对公网暴露的情况下。JMX从某种程度上来说,解决了上述两个问题,无论什么应用都能通过JMX对外暴露管理功能,单独的非业务含义的协议和通道,可以避免非必要的公网暴露。

你若盛开,清风自来 1909

JMX入门

JMX定义 JMX是Java Management Extensions的简写,即Java管理扩展。从名字中就可以看出,这门技术是对Java应用程序和JVM进行监控和管理的。在企业实际开发过程中,所有的程序都是需要进行监控的。没有监控,程序就相当于是裸奔。 JMX场景 通过JMX,我们可以监控的内容包括: 1、服务器中各种资源的使用情况:如CPU、内存等 2、JVM内存使用情况 3、JVM中的线程情况:tomcat线程池,自定义线程池 4、JVM中加载的类 5、自定义统计信息 四.

chy2z的专栏 928

jmx快速入门

简介 JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展。这种机制可以方便的管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。 基本术语 MBean:是Managed Bean的简称,可以翻译为“管理构件”。在JMX中MBean代表一个被管理的资源实例,通过MBean中暴露的方法和属性,外界可以...

tinysakura的博客 321

JMX监控入门:从基础到最佳实践

JMX是Java平台提供的一套标准框架,用于管理和监控 Java 应用程序、设备、服务或资源。它提供了一套标准化接口,支持跨异构操作系统、网络协议和系统架构的资源监控与管理。

ITmoster的博客 1229

jmx 复用 jmx_JMX:一些入门说明

jmx 复用 jmx JMX(Java管理扩展)是一种J2SE技术,可以管理和监视Java应用程序。 基本思想是实现一组管理对象,并将实现注册到平台服务器,在平台服务器上,可以使用一组连接器或适配器从本地或远程调用这些实现到JVM。 一个管理/仪器对象称为MBean(代表托管Bean)。 一旦实例化,一个MBean将在平台MBeanServer上注册一个唯一的ObjectName。 MB...

最佳 Java 编程 349

JMX学习

1. 絮絮叨叨 1.1 Java程序包含哪些线程? 使用Java进行多线程编程的人,多少可能都知道执行main()方法的是一个名为main的线程 通过new Thread新建线程,若不指定线程名,默认线程名为Thread-xx。其中xx是从0开始的编号 public static void main(String[] args) { for (int i = 0; i < 10; i++) { new Thread(() -> System.out.println

lucyLee的博客 3700
上一篇: 关于MongoDB java Driver(2.6.5) BUG引申的话题
下一篇: 分析ThreadLocal在JAVA中的应用
Program_newbie
博客等级 码龄18年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值