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();
}
}
相关推荐
【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】.
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...
PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java
PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从...
HBase 集群监控
为什么需要监控?为了保证系统的稳定性,可靠性,可运维性。 1. 掌控集群的核心性能指标,了解集群的性能表现。 2. 集群出现问题时及时报警,便于运维同学及时修复问题。 3. 集群重要指标值异常时进行预警,将问题扼杀在摇篮中,不用等集群真正不可用时才采取行动。 4. 当集群出现问题时,监控系统可以帮助我们更快的定位问题和解决问题如何构建 HBase 集群监控系统?公司有自己的监控系统,我们
D触发器(D Flip-Flop)与D锁存器(D Latch)
在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。
深度学习中 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 改进
JMX监控Zookeeper状态Java API
JMX监控Zookeeper状态的Java API
【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试
本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、
jmx入门 备忘
http://www.ibm.com/developerworks/cn/java/j-lo-jse63/ http://jackycheng2007.iteye.com/blog/1478182
CoppeliaSim和Python进行无人机联合仿真
CopeeliaSim和Python进行无人机轨迹跟踪联合仿真。首先建立起CoppeliaSim和Python的连接,其次在Python中生成轨迹,CoppeliaSim仿真环境中的无人机进行跟踪,并绘制出轨迹曲线,有每一步详细的教学。
SAP录入总账凭证报错 公司代码未被分配给国家或用于计算程序的国家消息号 FF703
SAP系统报错FF703的解决方案:当公司代码未分配国家或未配置计税程序时,会导致增值税计算失败。处理方法:1)通过OX02检查公司代码国家字段;2)使用OBBG为国家分配计税程序(如TAXCN)。配置步骤:1)SPRO分配公司代码到国家;2)OBBG设置国家对应的计税程序。注意事项:历史数据需清理才能修改国家字段,不同账簿可配置不同计税程序。完成配置后即可正常处理含税凭证。
JMX代码入门(一)
package com.fanshadoop; /** * * standard MBean是通过接口定义的,且接口名称的后缀为"MBean" * 1)get方法定义了MBean的成员变量是可读权限 * 2)set方法定义了MBean的成员变量是可写权限 */ public interface HelloWorldMBean { public void setGreeting( St
系规备考论文:论IT服务规划设计
系规备考论文:论IT服务规划设计
JMX代码入门(二)
package com.fanshadoop; import javax.management.Notification; import javax.management.NotificationBroadcasterSupport; /** * JMX notification是用来从MBean和agent发送信息到其他对象(已经注册接受信息)的Java对象。 * 对接收事件感兴趣的是no
Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)
CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。
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...
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
【JMX】JAVA监控的基石
一文快速讲解一切JAVA监控的基石——JMX。
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)
JMX使用入门
简述 本文是关于JMX(Java Management Extensions)的使用文档。 关于JMX 所谓JMX,是Java Management Extensions(Java管理扩展)的缩写,是一个为应用程序植入管理功能的框架。JMX有以下用途: 监控应用程序的运行状态和相关统计信息。 修改应用程序的配置(无需重启)。 状态变化或出错时通知处理。 举个例子,我们可以通过jconsole监控应用程序的堆内存使用量、线程数、类数,查看某些配置信息,甚至可以动态地修改配置。另外,有时..
JMX的使用
JMX是Java Management Extention的缩写,出发点是让外部通过属性/方法来读取或设置程序状态。对于提供对外服务的程序来说,天生就有这样的能力,Web程序通过HTTP接口对外暴露,RPC应用通过RPC接口暴露。不过带来的问题,一是依赖环境,不同的环境能力不同;二是需要单独处理安全性问题,尤其是对公网暴露的情况下。JMX从某种程度上来说,解决了上述两个问题,无论什么应用都能通过JMX对外暴露管理功能,单独的非业务含义的协议和通道,可以避免非必要的公网暴露。
JMX入门
JMX定义 JMX是Java Management Extensions的简写,即Java管理扩展。从名字中就可以看出,这门技术是对Java应用程序和JVM进行监控和管理的。在企业实际开发过程中,所有的程序都是需要进行监控的。没有监控,程序就相当于是裸奔。 JMX场景 通过JMX,我们可以监控的内容包括: 1、服务器中各种资源的使用情况:如CPU、内存等 2、JVM内存使用情况 3、JVM中的线程情况:tomcat线程池,自定义线程池 4、JVM中加载的类 5、自定义统计信息 四.
jmx快速入门
简介 JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展。这种机制可以方便的管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。 基本术语 MBean:是Managed Bean的简称,可以翻译为“管理构件”。在JMX中MBean代表一个被管理的资源实例,通过MBean中暴露的方法和属性,外界可以...
JMX监控入门:从基础到最佳实践
JMX是Java平台提供的一套标准框架,用于管理和监控 Java 应用程序、设备、服务或资源。它提供了一套标准化接口,支持跨异构操作系统、网络协议和系统架构的资源监控与管理。
jmx 复用 jmx_JMX:一些入门说明
jmx 复用 jmx JMX(Java管理扩展)是一种J2SE技术,可以管理和监视Java应用程序。 基本思想是实现一组管理对象,并将实现注册到平台服务器,在平台服务器上,可以使用一组连接器或适配器从本地或远程调用这些实现到JVM。 一个管理/仪器对象称为MBean(代表托管Bean)。 一旦实例化,一个MBean将在平台MBeanServer上注册一个唯一的ObjectName。 MB...
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
1680



被折叠的 条评论
为什么被折叠?



