【转】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学习之面向对象
面向对象是相对面向过程而言面向过程:强调的是功能行为面向对象:将功能封装进对象,强调具备了功能的对象 不论面向对象还是面向过程都是一种开发思想而已.举一个例子来理解面向对象和面向过程把大象装进冰箱分三 ...
- linux命令行光标移动技巧
看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动.在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作.但是事情也不是那么简单,还是需要知道“如何去做” ...
- 关于audio不能拖放
图一,图二均为wav格式文件 图一为播放本地的音频,可以拖放 图二为放在后台的音频,不可以拖放 把这两个图片发给后台,让后台分析下两个的headers不同之处
- 注解深入浅出之Retrofit中的注解(三)
更多andorid高级架构进阶视频免费分享学习请点击:https://space.bilibili.com/474380680 Retrofit中的注解 @Query,@QueryMap,@Field ...
- Oracle执行计划不走索引的原因总结
在Oracle数据库操作中,为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?本文我们主要就介绍这部分内容,接下来就让我们一起来了解一下. 不走索引大体有以下几个原 ...
- mysql中BLACKHOOL的作用
MySQL在5.x系列提供了Blackhole引擎–"黑洞". 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:Select语句的内容永远是空. 和Lin ...
- Makefile中几种赋值
= 延时变量,只有被使用时才展开定义 := 立即变量,定义时的赋值立即有效 ?= 条件变量,当变量为空时才赋值 += 追加赋值
- Spring学习笔记(4)——IoC学习
IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械式手表 ...
- enovia PLM : add new value to SPEO
Solution: Modify LUX_SPEO attribute in PLM Modify D_SPEO attribute in SAP , Login sap system F3 Tcod ...
- shell变量替换扩展 变量测试