【转】java使用java.lang.management监视和管理 Java 虚拟机
原文地址:https://blog.csdn.net/zhongweijian/article/details/7619383
软件包 java.lang.management
提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。
接口摘要
| ClassLoadingMXBean | 用于 Java 虚拟机的类加载系统的管理接口。 |
| CompilationMXBean | 用于 Java 虚拟机的编译系统的管理接口。 |
| GarbageCollectorMXBean | 用于 Java 虚拟机的垃圾回收的管理接口。 |
| MemoryManagerMXBean | 内存管理器的管理接口。 |
| MemoryMXBean | Java 虚拟机的内存系统的管理接口。 |
| MemoryPoolMXBean | 内存池的管理接口。 |
| OperatingSystemMXBean | 用于操作系统的管理接口,Java 虚拟机在此操作系统上运行。 |
| RuntimeMXBean | Java 虚拟机的运行时系统的管理接口。 |
| ThreadMXBean |
Java 虚拟机线程系统的管理接口。 |
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.MemoryManagerMXBean;import java.lang.management.MemoryPoolMXBean;import java.lang.management.MemoryUsage;import java.lang.management.OperatingSystemMXBean;import java.lang.management.RuntimeMXBean;import java.lang.management.ThreadMXBean;import java.util.List;import javax.management.MBeanServerConnection;public class MBeanDemo {public static void main(String[] args) {showJvmInfo();showMemoryInfo();showSystem();showClassLoading();showCompilation();showThread();showGarbageCollector();showMemoryManager();showMemoryPool();}/*** Java 虚拟机的运行时系统*/public static void showJvmInfo() {RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();String vendor = mxbean.getVmVendor();System.out.println("jvm name:" + mxbean.getVmName());System.out.println("jvm version:" + mxbean.getVmVersion());System.out.println("jvm bootClassPath:" + mxbean.getBootClassPath());System.out.println("jvm start time:" + mxbean.getStartTime());}/*** Java 虚拟机的内存系统*/public static void showMemoryInfo() {MemoryMXBean mem = ManagementFactory.getMemoryMXBean();MemoryUsage heap = mem.getHeapMemoryUsage();System.out.println("Heap committed:" + heap.getCommitted() + " init:" + heap.getInit() + " max:"+ heap.getMax() + " used:" + heap.getUsed());}/*** Java 虚拟机在其上运行的操作系统*/public static void showSystem() {OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();System.out.println("Architecture: " + op.getArch());System.out.println("Processors: " + op.getAvailableProcessors());System.out.println("System name: " + op.getName());System.out.println("System version: " + op.getVersion());System.out.println("Last minute load: " + op.getSystemLoadAverage());}/*** Java 虚拟机的类加载系统*/public static void showClassLoading(){ClassLoadingMXBean cl = ManagementFactory.getClassLoadingMXBean();System.out.println("TotalLoadedClassCount: " + cl.getTotalLoadedClassCount());System.out.println("LoadedClassCount" + cl.getLoadedClassCount());System.out.println("UnloadedClassCount:" + cl.getUnloadedClassCount());}/*** Java 虚拟机的编译系统*/public static void showCompilation(){CompilationMXBean com = ManagementFactory.getCompilationMXBean();System.out.println("TotalCompilationTime:" + com.getTotalCompilationTime());System.out.println("name:" + com.getName());}/*** Java 虚拟机的线程系统*/public static void showThread(){ThreadMXBean thread = ManagementFactory.getThreadMXBean();System.out.println("ThreadCount" + thread.getThreadCount());System.out.println("AllThreadIds:" + thread.getAllThreadIds());System.out.println("CurrentThreadUserTime" + thread.getCurrentThreadUserTime());//......还有其他很多信息}/*** Java 虚拟机中的垃圾回收器。*/public static void showGarbageCollector(){List<GarbageCollectorMXBean> gc = ManagementFactory.getGarbageCollectorMXBeans();for(GarbageCollectorMXBean GarbageCollectorMXBean : gc){System.out.println("name:" + GarbageCollectorMXBean.getName());System.out.println("CollectionCount:" + GarbageCollectorMXBean.getCollectionCount());System.out.println("CollectionTime" + GarbageCollectorMXBean.getCollectionTime());}}/*** Java 虚拟机中的内存管理器*/public static void showMemoryManager(){List<MemoryManagerMXBean> mm = ManagementFactory.getMemoryManagerMXBeans();for(MemoryManagerMXBean eachmm: mm){System.out.println("name:" + eachmm.getName());System.out.println("MemoryPoolNames:" + eachmm.getMemoryPoolNames().toString());}}/*** Java 虚拟机中的内存池*/public static void showMemoryPool(){List<MemoryPoolMXBean> mps = ManagementFactory.getMemoryPoolMXBeans();for(MemoryPoolMXBean mp : mps){System.out.println("name:" + mp.getName());System.out.println("CollectionUsage:" + mp.getCollectionUsage());System.out.println("type:" + mp.getType());}}/*** 访问 MXBean 的方法的三种方法*/public static void visitMBean(){//第一种直接调用同一 Java 虚拟机内的 MXBean 中的方法。RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();String vendor1 = mxbean.getVmVendor();System.out.println("vendor1:" + vendor1);//第二种通过一个连接到正在运行的虚拟机的平台 MBeanServer 的 MBeanServerConnection。MBeanServerConnection mbs = null;// Connect to a running JVM (or itself) and get MBeanServerConnection// that has the JVM MXBeans registered in it/*try {// Assuming the RuntimeMXBean has been registered in mbsObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);String vendor2 = (String) mbs.getAttribute(oname, "VmVendor");System.out.println("vendor2:" + vendor2);} catch (Exception e) {e.printStackTrace();}*///第三种使用 MXBean 代理// MBeanServerConnection mbs3 = null;// RuntimeMXBean proxy;// try {// proxy = ManagementFactory.newPlatformMXBeanProxy(mbs3,ManagementFactory.RUNTIME_MXBEAN_NAME,// RuntimeMXBean.class);// String vendor = proxy.getVmVendor();// } catch (IOException e) {// e.printStackTrace();// }}}
输出:
jvm name:Java HotSpot(TM) Client VMjvm version:1.6.0-b105jvm bootClassPath:C:\Program Files\Java\jdk1.6.0\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0\jre\classesjvm start time:1307440032774Heap committed:5177344 init:0 max:66650112 used:632640Architecture: x86Processors: 2System name: Windows XPSystem version: 5.1Last minute load: -1.0TotalLoadedClassCount: 381LoadedClassCount381UnloadedClassCount:0TotalCompilationTime:3name:HotSpot Client CompilerThreadCount5AllThreadIds:[J@47b480CurrentThreadUserTime15625000name:CopyCollectionCount:0CollectionTime0name:MarkSweepCompactCollectionCount:0CollectionTime0name:CodeCacheManagerMemoryPoolNames:[Ljava.lang.String;@1389e4name:CopyMemoryPoolNames:[Ljava.lang.String;@c20e24name:MarkSweepCompactMemoryPoolNames:[Ljava.lang.String;@2e7263name:Code CacheCollectionUsage:nulltype:Non-heap memoryname:Eden SpaceCollectionUsage:init = 917504(896K) used = 0(0K) committed = 0(0K) max = 4194304(4096K)type:Heap memoryname:Survivor SpaceCollectionUsage:init = 65536(64K) used = 0(0K) committed = 0(0K) max = 458752(448K)type:Heap memoryname:Tenured GenCollectionUsage:init = 4194304(4096K) used = 0(0K) committed = 0(0K) max = 61997056(60544K)type:Heap memoryname:Perm GenCollectionUsage:init = 12582912(12288K) used = 0(0K) committed = 0(0K) max = 67108864(65536K)type:Non-heap memoryname:Perm Gen [shared-ro]CollectionUsage:init = 8388608(8192K) used = 0(0K) committed = 0(0K) max = 8388608(8192K)type:Non-heap memoryname:Perm Gen [shared-rw]CollectionUsage:init = 12582912(12288K) used = 0(0K) committed = 0(0K) max = 12582912(12288K)type:Non-heap memory
【转】java使用java.lang.management监视和管理 Java 虚拟机的更多相关文章
- java使用java.lang.management监视和管理 Java 虚拟机
ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口. CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口. GarbageCollector ...
- Java 监控基础 - 使用 JMX 监控和管理 Java 程序
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码网站 已经收录,有很多知识点和系列文章. 此篇文 ...
- 远程监视jboss应用java内存的配置
前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...
- 远程监视jboss应用java内存的配置(实测) .
前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...
- Java Business Process Management(业务流程管理) 初识环境搭建
一.简介 (一)什么是jbpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易 ...
- 前台传参数时间类型不匹配:type 'java.lang.String' to required type 'java.util.Date' for property 'createDate'
springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...
- Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'xxx': no matching editors or conversion strategy found
今天在完成项目的时候遇到了下面的异常信息: 04-Aug-2014 15:49:27.894 SEVERE [http-apr-8080-exec-5] org.apache.catalina.cor ...
- paip.自动import的实现跟java.lang.SecurityException Prohibited package name java
paip.自动import的实现跟java.lang.SecurityException Prohibited package name java #-----自动import 因为java.lang ...
- Error: java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path
Error Message When compiling or executing a Java application that uses the ArcObjects Java API, the ...
随机推荐
- 【Java架构:基础技术】一篇文章搞掂:MySQL
数据库优化手段: 1.查看数据库性能参数 2.分析查询语句 3.添加索引 4.使用连接代替子查询 5.优化数据库结构 字段很多的表分解成多个表 经常联合查询的表,建立中间表 冗余字段 优化插入记录的速 ...
- 2018icpc南京/gym101981 A Adrien and Austin 博弈
题意: n个连续排列的石子,每次只许拿连续的(中间没有空格)的k个,问你谁必胜 题解: 简单博弈,特判总数为0,k=1两种情况,其他情况先拿必胜,方法是拿掉中间的,然后对方怎么拿你镜面拿就行. #in ...
- spring boot找不到或无法加载主类 io.renren.RenrenApplication
spring boot找不到或无法加载主类 io.renren.RenrenApplication 出现问题: spring boot 项目以前一直是好好的,用mvn clean package 打包 ...
- vi总结的几个技巧
1.用vi编辑完文件后 按两次Z可以直接保存退出2.在打开一个vi编辑时可以输入:sp /etc/passwd 同时打开另一个文件注意这里要用绝对路径
- 18. HTTP协议一:概述、原理、版本、请求方法
HTTP协议概述 HTTP协议就是我们常说的超文本协议(HyperText Transfer Protocol).HTTP协议是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准. ...
- PHP 原生上传图片
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> < ...
- vue组件级路由钩子函数(beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave)
1.vue组件级路由钩子函数(beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave):http://www.menvscode.com/detail/ ...
- Vertical-Align,你应该知道的一切
我们聊聊vertical-align.这个属性主要目的用于将相邻的文本与元素对齐.而实际上,verticle-algin可以在不同上下文中灵活地对齐元素,以及进行细粒度的控制,不必知道元素的大小.元素 ...
- Python面试题之“猴子补丁”(monkey patching)指的是什么?这种做法好吗?
“猴子补丁”就是指,在函数或对象已经定义之后,再去改变它们的行为. 举个例子: import datetime datetime.datetime.now = lambda: datetime.dat ...
- USACO 2014 US Open Dueling GPS's /// SPFA
题目大意: 给定n个点m条边的有向图 有两个GPS 分别认为 A[i]到B[i] 的一条边的花费是P[i].Q[i] 当当前走的边不是GPS认为的最短路上的边就会被警告 即两个GPS都不认为是最短路上 ...