【转】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 ...
随机推荐
- python爬虫https://www.imdb.com/chart/top的电影
目标:爬取https://www.imdb.com/chart/top网页上面的电影top20 直接上main.py代码: #!/usr/bin/python35 # -*- coding:utf-8 ...
- 用define 宏定义注释符号
上面对define 的使用都很简单,再看看下面的例子:#define BSC //#define BMC /*#define EMC */D),BSC my single-line commentE) ...
- gulp压缩css
gulp压缩css,选用的依赖是gulp-clean-css,在压缩大型项目时还对用到一个dom流压缩文件选取的依赖gulp-dom-src 依赖安装:npm i gulp-clean-css 依赖安 ...
- Django框架(十六)—— cookie和session组件
目录 cookie和session组件 一.cookie 1.cookie的由来 2.什么是cookie 3.cookie的原理 4.cookie的覆盖 5.在浏览器中查看cookie 6.cooki ...
- 一份详尽的 Java 问题排查工具清单,值得收藏!
| grep 5 -A 3 #上匹配seq 10 | grep 5 -B 3 #下匹配seq 10 | grep 5 -C 3 #上下匹配,平时用这个就妥了cat f.txt | g ...
- day07 python列表 集合 深浅拷贝
day07 python 一.知识点补充 1."".join() s = "".join(('1','2','3','4','5')) #将字符串 ...
- javac无效问题解决
首先去下载JDK的最新版本,目前应该是1.7,具体下载地址可以百度去搜索下载 步骤阅读 2 下载时候要注意自己系统的版本,JDK分32位和64位版,根据自己系统版本下载. 步骤阅读 3 下载完后安装, ...
- express 的路由学习
使用步骤 - :获取路由中间件对象 `let router = express.Router();` - :配置路由规则 `router.请求方式(URL,fn事)` - fn中参数有req,res, ...
- 6380. 【NOIP2019模拟2019.10.06】小w与最长路(path)
题目 题目大意 给你一棵树,对于每一条边,求删去这条边之后,再用一条边(自己定)连接两个连通块,形成的树的直径最小是多少. 正解 首先,将这棵树的直径给找出来.显然,如果删去的边不在直径上,那么答案就 ...
- Ubuntu开放对外端口
1.查看已经开启的端口 sudo ufw status 2.打开80端口 sudo ufw allow 80 3.防火墙开启 sudo ufw enable 4.防火墙重启 sudo ufw relo ...