【转】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 ...
随机推荐
- 【Shiro】五、Apache Shiro加密
Shiro提供了更好封装,更好使用的加密算法API,可以作为平时使用的一个工具类的预选方案. Shiro的密码学 基本特性 接口驱动,基于POJO 对JCE(Java Cryptography Ext ...
- 51NOD 1005
1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大 ...
- Emgucv图像处理工具
此工具是当年自己在学习Emgucv的时候,慢慢积累的,包含了常用的图像处理算法,非常适合新人学习,现放出源码,由于是以前做的,功能不全. 当时Emgucv的学习资料非常之少,没有一本书是讲Emgucv ...
- Angular 2 技能图谱skill-map
# Angular 2 技能图谱 ## 模块 ### 自定义模块 - 根模块 - 特性模块 - 共享模块 - 核心模块 ### 内置模块 - ApplicationModule 模块 - Common ...
- CCflow与基础框架组织机构整合
SELECT No,Name,Pass,FK_Dept,SID FROM Port_Emp SELECT No,Name,ParentNo FROM Port_Dept SELECT No,Name, ...
- 什么是AngularJs?特点是什么?和JQuery什么区别和联系
什么是AngularJs? AngularJs是js框架,集中操作数据,不关注Dom操作,适用于以数据操作为主的的SPA(单页应用). 它的特点 采用MVC模型 双向数据绑定 依赖注入 模块化 与jQ ...
- Gym 102082B : Arithmetic Progressions
戳这里看题目吧! 题目大意:给你一个长度为n(2<=n<=5000)的序列,没有重复的数字,序列中每个元素满足(0<=numi<=1e9).求一个最长的数列满足差分值相同(除n ...
- vue-cli3.0打包完自动压缩zip
打包是我们常见的操作 一般打包完还需要压缩丢到服务器解压 首先 我们需要一个 filemanager-webpack-plugin npm i filemanager-webpack-plugin - ...
- C语言博客作业02
2.1 一.请仔细阅读<提问的智慧>,用自己的话描述你的收获,并举例子说明应该如何提问. 答:1.提问是思考的另一种方式,一个好的提问能体现出我们在认真的,聪明的思考; 2.做什么事情都要 ...
- Nehe OpenGL教程第一课-创建一个OpenGL窗口(Win32)
原文英文地址为:Creating an OpenGL Window (Win32),翻译的chm中文格式文档下载地址为:OpenGL教程电子书(chm格式)中文版,源代码在官网上也可以下载到,每 ...