生活随笔
收集整理的這篇文章主要介紹了
java 利用ManagementFactory获取jvm,os的一些信息--转
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文地址:http://blog.csdn.net/dream_broken/article/details/49759043
想了解下某個(gè)Java項(xiàng)目的運(yùn)行時(shí)jvm的情況,可以使用一些監(jiān)控工具,比如jdk的bin下就提供了很多工具。
???
比如,本地運(yùn)行一個(gè)程序,讓它死循環(huán)
?
[java]?view plaincopy
while(true){??????????????try?{??????????????????Thread.sleep(10*1000);??????????????}?catch?(Exception?e)?{????????????????????????????????}??????????}??
? ? 然后,點(diǎn)擊啟動(dòng)jconsole.exe
?
可以發(fā)現(xiàn),jconsole.exe可以連接本地,也可以連接遠(yuǎn)程,我們選擇本地的中的剛剛上面執(zhí)行的那個(gè)類
我們發(fā)現(xiàn),居然可以監(jiān)控到這么多信息,那如果我們自己寫代碼,能否獲取到這些信息呢,點(diǎn)擊MBean。
java.lang下,看名稱就知道是什么了,再點(diǎn)擊某一個(gè),會(huì)看到一些類信息,也就是說,我們是有可能自己寫代碼也能獲取到j(luò)vm信息的。
? ? 下面就記錄下例子代碼。
?
?
[java]?view plaincopy
package?com.fei;????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.ThreadInfo;??import?java.lang.management.ThreadMXBean;??import?java.lang.reflect.InvocationTargetException;??import?java.lang.reflect.Method;??import?java.util.Arrays;??import?java.util.List;????public?class?JvmInfo?{????????static?final?long?MB?=?1024?*?1024;????????????public?static?void?main(String[]?args)?{??????????????????????????????????????????????System.out.println("===========打印系統(tǒng)信息==========");??????????printOperatingSystemInfo();??????????????????System.out.println("===========打印編譯信息==========");??????????printCompilationInfo();??????????????????System.out.println("===========打印類加載信息==========");??????????printClassLoadingInfo();??????????????????System.out.println("===========打印運(yùn)行時(shí)信息==========");??????????printRuntimeInfo();??????????????????System.out.println("===========打印內(nèi)存管理器信息==========");??????????printMemoryManagerInfo();??????????????????System.out.println("===========打印垃圾回收信息==========");??????????printGarbageCollectorInfo();??????????????????System.out.println("===========打印vm內(nèi)存信息==========");??????????printMemoryInfo();??????????????????System.out.println("===========打印vm各內(nèi)存區(qū)信息==========");??????????printMemoryPoolInfo();??????????????????System.out.println("===========打印線程==========");??????????printThreadInfo();????????????????}??????????????????private?static?void?printOperatingSystemInfo(){??????????OperatingSystemMXBean?system?=?ManagementFactory.getOperatingSystemMXBean();??????????????????System.out.println("系統(tǒng)名稱:"+system.getName());??????????????????System.out.println("系統(tǒng)版本:"+system.getVersion());??????????????????System.out.println("操作系統(tǒng)的架構(gòu):"+system.getArch());??????????????????System.out.println("可用的內(nèi)核數(shù):"+system.getAvailableProcessors());????????????????????if(isSunOsMBean(system)){??????????????long?totalPhysicalMemory?=?getLongFromOperatingSystem(system,"getTotalPhysicalMemorySize");??????????????long?freePhysicalMemory?=?getLongFromOperatingSystem(system,?"getFreePhysicalMemorySize");??????????????long?usedPhysicalMemorySize?=totalPhysicalMemory?-?freePhysicalMemory;????????????????????????????System.out.println("總物理內(nèi)存(M):"+totalPhysicalMemory/MB);??????????????System.out.println("已用物理內(nèi)存(M):"+usedPhysicalMemorySize/MB);??????????????System.out.println("剩余物理內(nèi)存(M):"+freePhysicalMemory/MB);????????????????????????????long??totalSwapSpaceSize?=?getLongFromOperatingSystem(system,?"getTotalSwapSpaceSize");??????????????long?freeSwapSpaceSize?=?getLongFromOperatingSystem(system,?"getFreeSwapSpaceSize");??????????????long?usedSwapSpaceSize?=?totalSwapSpaceSize?-?freeSwapSpaceSize;????????????????????????????System.out.println("總交換空間(M):"+totalSwapSpaceSize/MB);??????????????System.out.println("已用交換空間(M):"+usedSwapSpaceSize/MB);??????????????System.out.println("剩余交換空間(M):"+freeSwapSpaceSize/MB);??????????}??????}????????????private?static?long?getLongFromOperatingSystem(OperatingSystemMXBean?operatingSystem,?String?methodName)?{??????????try?{??????????????final?Method?method?=?operatingSystem.getClass().getMethod(methodName,??????????????????????(Class<?>[])?null);??????????????method.setAccessible(true);??????????????return?(Long)?method.invoke(operatingSystem,?(Object[])?null);??????????}?catch?(final?InvocationTargetException?e)?{??????????????if?(e.getCause()?instanceof?Error)?{??????????????????throw?(Error)?e.getCause();??????????????}?else?if?(e.getCause()?instanceof?RuntimeException)?{??????????????????throw?(RuntimeException)?e.getCause();??????????????}??????????????throw?new?IllegalStateException(e.getCause());??????????}?catch?(final?NoSuchMethodException?e)?{??????????????throw?new?IllegalArgumentException(e);??????????}?catch?(final?IllegalAccessException?e)?{??????????????throw?new?IllegalStateException(e);??????????}??????}????????private?static?void?printCompilationInfo(){??????????CompilationMXBean?compilation?=?ManagementFactory.getCompilationMXBean();??????????System.out.println("JIT編譯器名稱:"+compilation.getName());??????????????????if(compilation.isCompilationTimeMonitoringSupported()){??????????????System.out.println("總編譯時(shí)間:"+compilation.getTotalCompilationTime()+"秒");??????????}??????}????????????private?static?void?printClassLoadingInfo(){??????????ClassLoadingMXBean?classLoad=?ManagementFactory.getClassLoadingMXBean();??????????System.out.println("已加載類總數(shù):"+classLoad.getTotalLoadedClassCount());??????????System.out.println("已加載當(dāng)前類:"+classLoad.getLoadedClassCount());??????????System.out.println("已卸載類總數(shù):"+classLoad.getUnloadedClassCount());????????????????}????????????private?static?void?printRuntimeInfo(){??????????RuntimeMXBean?runtime?=?ManagementFactory.getRuntimeMXBean();??????????System.out.println("進(jìn)程PID="+runtime.getName().split("@")[0]);??????????System.out.println("jvm規(guī)范名稱:"+runtime.getSpecName());??????????System.out.println("jvm規(guī)范運(yùn)營商:"+runtime.getSpecVendor());??????????System.out.println("jvm規(guī)范版本:"+runtime.getSpecVersion());??????????????????System.out.println("jvm啟動(dòng)時(shí)間(毫秒):"+runtime.getStartTime());??????????????????System.out.println("獲取System.properties:"+runtime.getSystemProperties());??????????System.out.println("jvm正常運(yùn)行時(shí)間(毫秒):"+runtime.getUptime());??????????????????System.out.println("jvm名稱:"+runtime.getVmName());??????????????????System.out.println("jvm運(yùn)營商:"+runtime.getVmVendor());??????????????????System.out.println("jvm實(shí)現(xiàn)版本:"+runtime.getVmVersion());??????????List<String>?args?=?runtime.getInputArguments();??????????if(args?!=?null?&&?!args.isEmpty()){??????????????System.out.println("vm參數(shù):");??????????????for(String?arg?:?args){??????????????????System.out.println(arg);??????????????}??????????}??????????System.out.println("類路徑:"+runtime.getClassPath());??????????System.out.println("引導(dǎo)類路徑:"+runtime.getBootClassPath());??????????System.out.println("庫路徑:"+runtime.getLibraryPath());??????}????????????private?static?void?printMemoryManagerInfo(){??????????List<MemoryManagerMXBean>?managers?=?ManagementFactory.getMemoryManagerMXBeans();??????????if(managers?!=?null?&&?!managers.isEmpty()){??????????????for(MemoryManagerMXBean?manager?:?managers){??????????????????System.out.println("vm內(nèi)存管理器:名稱="+manager.getName()+",管理的內(nèi)存區(qū)="??????????????+Arrays.deepToString(manager.getMemoryPoolNames())+",ObjectName="+manager.getObjectName());??????????????}??????????}??????}????????????private?static?void?printGarbageCollectorInfo(){??????????List<GarbageCollectorMXBean>?garbages?=?ManagementFactory.getGarbageCollectorMXBeans();??????????for(GarbageCollectorMXBean?garbage?:?garbages){??????????????System.out.println("垃圾收集器:名稱="+garbage.getName()+",收集="+garbage.getCollectionCount()+",總花費(fèi)時(shí)間="??????????+garbage.getCollectionTime()+",內(nèi)存區(qū)名稱="+Arrays.deepToString(garbage.getMemoryPoolNames()));??????????}??????}????????????private?static?void?printMemoryInfo(){??????????MemoryMXBean?memory?=?ManagementFactory.getMemoryMXBean();??????????MemoryUsage?headMemory?=?memory.getHeapMemoryUsage();??????????System.out.println("head堆:");??????????System.out.println("\t初始(M):"+headMemory.getInit()/MB);??????????System.out.println("\t最大(上限)(M):"+headMemory.getMax()/MB);??????????System.out.println("\t當(dāng)前(已使用)(M):"+headMemory.getUsed()/MB);??????????System.out.println("\t提交的內(nèi)存(已申請(qǐng))(M):"+headMemory.getCommitted()/MB);??????????System.out.println("\t使用率:"+headMemory.getUsed()*100/headMemory.getCommitted()+"%");????????????????????System.out.println("non-head非堆:");??????????MemoryUsage?nonheadMemory?=?memory.getNonHeapMemoryUsage();??????????System.out.println("\t初始(M):"+nonheadMemory.getInit()/MB);??????????System.out.println("\t最大(上限)(M):"+nonheadMemory.getMax()/MB);??????????System.out.println("\t當(dāng)前(已使用)(M):"+nonheadMemory.getUsed()/MB);??????????System.out.println("\t提交的內(nèi)存(已申請(qǐng))(M):"+nonheadMemory.getCommitted()/MB);??????????System.out.println("\t使用率:"+nonheadMemory.getUsed()*100/nonheadMemory.getCommitted()+"%");??????}????????????private?static?void?printMemoryPoolInfo(){??????????List<MemoryPoolMXBean>?pools?=?ManagementFactory.getMemoryPoolMXBeans();??????????if(pools?!=?null?&&?!pools.isEmpty()){??????????????for(MemoryPoolMXBean?pool?:?pools){??????????????????????????????????????????????????System.out.println("vm內(nèi)存區(qū):\n\t名稱="+pool.getName()+"\n\t所屬內(nèi)存管理者="+Arrays.deepToString(pool.getMemoryManagerNames())??????????????????????????+"\n\t?ObjectName="+pool.getObjectName()+"\n\t初始大小(M)="+pool.getUsage().getInit()/MB??????????????????????????+"\n\t最大(上限)(M)="+pool.getUsage().getMax()/MB??????????????????????????+"\n\t已用大小(M)="+pool.getUsage().getUsed()/MB??????????????????????????+"\n\t已提交(已申請(qǐng))(M)="+pool.getUsage().getCommitted()/MB??????????????????????????+"\n\t使用率="+(pool.getUsage().getUsed()*100/pool.getUsage().getCommitted())+"%");????????????????????????????}??????????}??????}????????????private?static?void?printThreadInfo(){??????????ThreadMXBean?thread?=?ManagementFactory.getThreadMXBean();??????????System.out.println("ObjectName="+thread.getObjectName());??????????System.out.println("仍活動(dòng)的線程總數(shù)="+thread.getThreadCount());??????????System.out.println("峰值="+thread.getPeakThreadCount());??????????System.out.println("線程總數(shù)(被創(chuàng)建并執(zhí)行過的線程總數(shù))="+thread.getTotalStartedThreadCount());??????????System.out.println("當(dāng)初仍活動(dòng)的守護(hù)線程(daemonThread)總數(shù)="+thread.getDaemonThreadCount());????????????????????????????long[]?deadlockedIds?=??thread.findDeadlockedThreads();??????????if(deadlockedIds?!=?null?&&?deadlockedIds.length?>?0){??????????????ThreadInfo[]?deadlockInfos?=?thread.getThreadInfo(deadlockedIds);??????????????System.out.println("死鎖線程信息:");??????????????System.out.println("\t\t線程名稱\t\t狀態(tài)\t\t");??????????????for(ThreadInfo?deadlockInfo?:?deadlockInfos){??????????????????System.out.println("\t\t"+deadlockInfo.getThreadName()+"\t\t"+deadlockInfo.getThreadState()??????????????????????????+"\t\t"+deadlockInfo.getBlockedTime()+"\t\t"+deadlockInfo.getWaitedTime()??????????????????????????+"\t\t"+deadlockInfo.getStackTrace().toString());??????????????}??????????}??????????long[]?threadIds?=?thread.getAllThreadIds();??????????if(threadIds?!=?null?&&?threadIds.length?>?0){??????????????ThreadInfo[]?threadInfos?=?thread.getThreadInfo(threadIds);??????????????System.out.println("所有線程信息:");??????????????System.out.println("\t\t線程名稱\t\t\t\t\t狀態(tài)\t\t\t\t\t線程id");??????????????for(ThreadInfo?threadInfo?:?threadInfos){??????????????????System.out.println("\t\t"+threadInfo.getThreadName()+"\t\t\t\t\t"+threadInfo.getThreadState()??????????????????????????+"\t\t\t\t\t"+threadInfo.getThreadId());??????????????}??????????}????????????????}????????????private?static?boolean?isSunOsMBean(OperatingSystemMXBean?operatingSystem)?{??????????final?String?className?=?operatingSystem.getClass().getName();??????????return?"com.sun.management.OperatingSystem".equals(className)??????????????????||?"com.sun.management.UnixOperatingSystem".equals(className);??????}??}?? ?
[plain]?view plaincopy
===========打印系統(tǒng)信息==========??系統(tǒng)名稱:Windows?7??系統(tǒng)版本:6.1??操作系統(tǒng)的架構(gòu):amd64??可用的內(nèi)核數(shù):4??總物理內(nèi)存(M):6041??已用物理內(nèi)存(M):5387??剩余物理內(nèi)存(M):653??總交換空間(M):18136??已用交換空間(M):15817??剩余交換空間(M):2319??===========打印編譯信息==========??JIT編譯器名稱:HotSpot?64-Bit?Tiered?Compilers??總編譯時(shí)間:0秒??===========打印類加載信息==========??已加載類總數(shù):410??已加載當(dāng)前類:410??已卸載類總數(shù):0??===========打印運(yùn)行時(shí)信息==========??進(jìn)程PID=386220??jvm規(guī)范名稱:Java?Virtual?Machine?Specification??jvm規(guī)范運(yùn)營商:Oracle?Corporation??jvm規(guī)范版本:1.7??jvm啟動(dòng)時(shí)間(毫秒):1447134405258??獲取System.properties:{java.vm.version=24.80-b11,?sun.jnu.encoding=GBK,?java.vendor.url=http://java.oracle.com/,?java.vm.info=mixed?mode,?user.dir=E:\test2\test200,?sun.cpu.isalist=amd64,?java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment,?sun.os.patch.level=Service?Pack?1,?java.io.tmpdir=C:\Users\WEIJIA~1\AppData\Local\Temp\,?user.home=E:\USER\weijianfei,?java.awt.printerjob=sun.awt.windows.WPrinterJob,?java.version=1.7.0_80,?file.encoding.pkg=sun.io,?java.vendor.url.bug=http://bugreport.sun.com/bugreport/,?file.encoding=UTF-8,?line.separator=??,?sun.java.command=com.fei.JvmInfo,?java.vm.specification.vendor=Oracle?Corporation,?java.vm.vendor=Oracle?Corporation,?java.class.path=E:\test2\test200\target\classes;E:\setup\maven\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;E:\setup\maven\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;E:\setup\maven\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;E:\setup\maven\log4j\log4j\1.2.16\log4j-1.2.16.jar;E:\setup\maven\jline\jline\0.9.94\jline-0.9.94.jar;E:\setup\maven\junit\junit\3.8.1\junit-3.8.1.jar;E:\setup\maven\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;E:\setup\maven\org\springframework\spring-webmvc\4.2.1.RELEASE\spring-webmvc-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-beans\4.2.1.RELEASE\spring-beans-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-context\4.2.1.RELEASE\spring-context-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-aop\4.2.1.RELEASE\spring-aop-4.2.1.RELEASE.jar;E:\setup\maven\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\setup\maven\org\springframework\spring-core\4.2.1.RELEASE\spring-core-4.2.1.RELEASE.jar;E:\setup\maven\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;E:\setup\maven\org\springframework\spring-expression\4.2.1.RELEASE\spring-expression-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-web\4.2.1.RELEASE\spring-web-4.2.1.RELEASE.jar,?sun.io.unicode.encoding=UnicodeLittle,?user.variant=,?os.arch=amd64,?user.name=weijianfei,?user.language=zh,?java.runtime.version=1.7.0_80-b15,?sun.boot.class.path=D:\jre1.7\lib\resources.jar;D:\jre1.7\lib\rt.jar;D:\jre1.7\lib\sunrsasign.jar;D:\jre1.7\lib\jsse.jar;D:\jre1.7\lib\jce.jar;D:\jre1.7\lib\charsets.jar;D:\jre1.7\lib\jfr.jar;D:\jre1.7\classes,?sun.desktop=windows,?sun.cpu.endian=little,?awt.toolkit=sun.awt.windows.WToolkit,?sun.boot.library.path=D:\jre1.7\bin,?java.vm.name=Java?HotSpot(TM)?64-Bit?Server?VM,?java.home=D:\jre1.7,?java.endorsed.dirs=D:\jre1.7\lib\endorsed,?sun.management.compiler=HotSpot?64-Bit?Tiered?Compilers,?java.runtime.name=Java(TM)?SE?Runtime?Environment,?java.library.path=D:\jre1.7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program?Files\Java\jdk1.6.0_45\bin;C:\Program?Files\Java\jdk1.6.0_45\jre\bin;D:\soft\svn1.8\bin;D:\apache-maven-3.2.3\bin;D:\mysql5.7\MySQL?Server?5.7\bin;D:\mysql5.7\MySQL?Utilities?1.3.5\;D:\mongoDB;.,?file.separator=\,?java.specification.vendor=Oracle?Corporation,?java.vm.specification.version=1.7,?sun.java.launcher=SUN_STANDARD,?user.timezone=,?os.name=Windows?7,?path.separator=;,?java.ext.dirs=D:\jre1.7\lib\ext;C:\Windows\Sun\Java\lib\ext,?sun.arch.data.model=64,?java.specification.name=Java?Platform?API?Specification,?os.version=6.1,?user.script=,?user.country=CN,?java.class.version=51.0,?java.vendor=Oracle?Corporation,?java.vm.specification.name=Java?Virtual?Machine?Specification,?java.specification.version=1.7}??jvm正常運(yùn)行時(shí)間(毫秒):573??jvm名稱:Java?HotSpot(TM)?64-Bit?Server?VM??jvm運(yùn)營商:Oracle?Corporation??jvm實(shí)現(xiàn)版本:24.80-b11??vm參數(shù):??-Dfile.encoding=UTF-8??類路徑:E:\test2\test200\target\classes;E:\setup\maven\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;E:\setup\maven\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;E:\setup\maven\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;E:\setup\maven\log4j\log4j\1.2.16\log4j-1.2.16.jar;E:\setup\maven\jline\jline\0.9.94\jline-0.9.94.jar;E:\setup\maven\junit\junit\3.8.1\junit-3.8.1.jar;E:\setup\maven\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;E:\setup\maven\org\springframework\spring-webmvc\4.2.1.RELEASE\spring-webmvc-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-beans\4.2.1.RELEASE\spring-beans-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-context\4.2.1.RELEASE\spring-context-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-aop\4.2.1.RELEASE\spring-aop-4.2.1.RELEASE.jar;E:\setup\maven\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\setup\maven\org\springframework\spring-core\4.2.1.RELEASE\spring-core-4.2.1.RELEASE.jar;E:\setup\maven\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;E:\setup\maven\org\springframework\spring-expression\4.2.1.RELEASE\spring-expression-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-web\4.2.1.RELEASE\spring-web-4.2.1.RELEASE.jar??引導(dǎo)類路徑:D:\jre1.7\lib\resources.jar;D:\jre1.7\lib\rt.jar;D:\jre1.7\lib\sunrsasign.jar;D:\jre1.7\lib\jsse.jar;D:\jre1.7\lib\jce.jar;D:\jre1.7\lib\charsets.jar;D:\jre1.7\lib\jfr.jar;D:\jre1.7\classes??庫路徑:D:\jre1.7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program?Files\Java\jdk1.6.0_45\bin;C:\Program?Files\Java\jdk1.6.0_45\jre\bin;D:\soft\svn1.8\bin;D:\apache-maven-3.2.3\bin;D:\mysql5.7\MySQL?Server?5.7\bin;D:\mysql5.7\MySQL?Utilities?1.3.5\;D:\mongoDB;.??===========打印內(nèi)存管理器信息==========??vm內(nèi)存管理器:名稱=CodeCacheManager,管理的內(nèi)存區(qū)=[Code?Cache],ObjectName=java.lang:type=MemoryManager,name=CodeCacheManager??vm內(nèi)存管理器:名稱=PS?Scavenge,管理的內(nèi)存區(qū)=[PS?Eden?Space,?PS?Survivor?Space],ObjectName=java.lang:type=GarbageCollector,name=PS?Scavenge??vm內(nèi)存管理器:名稱=PS?MarkSweep,管理的內(nèi)存區(qū)=[PS?Eden?Space,?PS?Survivor?Space,?PS?Old?Gen,?PS?Perm?Gen],ObjectName=java.lang:type=GarbageCollector,name=PS?MarkSweep??===========打印垃圾回收信息==========??垃圾收集器:名稱=PS?Scavenge,收集=0,總花費(fèi)時(shí)間=0,內(nèi)存區(qū)名稱=[PS?Eden?Space,?PS?Survivor?Space]??垃圾收集器:名稱=PS?MarkSweep,收集=0,總花費(fèi)時(shí)間=0,內(nèi)存區(qū)名稱=[PS?Eden?Space,?PS?Survivor?Space,?PS?Old?Gen,?PS?Perm?Gen]??===========打印vm內(nèi)存信息==========??head堆:??????初始(M):94??????最大(上限)(M):1344??????當(dāng)前(已使用)(M):1??????提交的內(nèi)存(已申請(qǐng))(M):91??????使用率:1%??non-head非堆:??????初始(M):23??????最大(上限)(M):130??????當(dāng)前(已使用)(M):3??????提交的內(nèi)存(已申請(qǐng))(M):23??????使用率:13%??===========打印vm各內(nèi)存區(qū)信息==========??vm內(nèi)存區(qū):??????名稱=Code?Cache??????所屬內(nèi)存管理者=[CodeCacheManager]???????ObjectName=java.lang:type=MemoryPool,name=Code?Cache??????初始大小(M)=2??????最大(上限)(M)=48??????已用大小(M)=0??????已提交(已申請(qǐng))(M)=2??????使用率=15%??vm內(nèi)存區(qū):??????名稱=PS?Eden?Space??????所屬內(nèi)存管理者=[PS?MarkSweep,?PS?Scavenge]???????ObjectName=java.lang:type=MemoryPool,name=PS?Eden?Space??????初始大小(M)=24??????最大(上限)(M)=497??????已用大小(M)=1??????已提交(已申請(qǐng))(M)=24??????使用率=6%??vm內(nèi)存區(qū):??????名稱=PS?Survivor?Space??????所屬內(nèi)存管理者=[PS?MarkSweep,?PS?Scavenge]???????ObjectName=java.lang:type=MemoryPool,name=PS?Survivor?Space??????初始大小(M)=3??????最大(上限)(M)=3??????已用大小(M)=0??????已提交(已申請(qǐng))(M)=3??????使用率=0%??vm內(nèi)存區(qū):??????名稱=PS?Old?Gen??????所屬內(nèi)存管理者=[PS?MarkSweep]???????ObjectName=java.lang:type=MemoryPool,name=PS?Old?Gen??????初始大小(M)=63??????最大(上限)(M)=1008??????已用大小(M)=0??????已提交(已申請(qǐng))(M)=63??????使用率=0%??vm內(nèi)存區(qū):??????名稱=PS?Perm?Gen??????所屬內(nèi)存管理者=[PS?MarkSweep]???????ObjectName=java.lang:type=MemoryPool,name=PS?Perm?Gen??????初始大小(M)=21??????最大(上限)(M)=82??????已用大小(M)=2??????已提交(已申請(qǐng))(M)=21??????使用率=13%??===========打印線程==========??ObjectName=java.lang:type=Threading??仍活動(dòng)的線程總數(shù)=5??峰值=5??線程總數(shù)(被創(chuàng)建并執(zhí)行過的線程總數(shù))=5??當(dāng)初仍活動(dòng)的守護(hù)線程(daemonThread)總數(shù)=4??所有線程信息:??????????線程名稱????????????????????狀態(tài)??????????????????線程id??????????Attach?Listener?????????????????RUNNABLE????????????????????5??????????Signal?Dispatcher???????????????????RUNNABLE????????????????????4??????????Finalizer???????????????????WAITING?????????????????3??????????Reference?Handler???????????????????WAITING?????????????????2??????????main????????????????????RUNNABLE????????????????????1??
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/6182453.html
總結(jié)
以上是生活随笔為你收集整理的java 利用ManagementFactory获取jvm,os的一些信息--转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。