java 利用ManagementFactory获取jvm,os的一些信息--转

前端之家收集整理的这篇文章主要介绍了java 利用ManagementFactory获取jvm,os的一些信息--转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文地址:http://blog.csdn.net/dream_broken/article/details/49759043

想了解下某个项目的运行时jvm的情况,可以使用一些监控工具,比如jdk的bin下就提供了很多工具。

   

比如,本地运行一个程序,让它死循环

<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools">
[java] <a class="ViewSource" title="view plain" href="
http://blog.csdn.net/dream_broken/article/details/49759043#"&gt;view plain<span data-mod="popu_168"><span data-mod="popu_168"> <a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/dream_broken/article/details/49759043#"&gt;copy

 
  1.             
  2.             } 
  3.             }  

    然后,点击启动jconsole.exe

可以发现,jconsole.exe可以连接本地,也可以连接远程,我们选择本地的中的刚刚上面执行的那个类

我们发现,居然可以监控到这么多信息,那如果我们自己写代码,能否获取到这些信息呢,点击MBean。

java.lang下,看名称就知道是什么了,再点击某一个,会看到一些类信息,也就是说,我们是有可能自己写代码也能获取到jvm信息的。

    下面就记录下例子代码。

<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools">
[java] <a class="ViewSource" title="view plain" href="http://blog.csdn.net/dream_broken/article/details/49759043#"&gt;view plain<span data-mod="popu_168"><span data-mod="popu_168"> <a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/dream_broken/article/details/49759043#"&gt;copy

 
  1.   
  2.     
  3.     
  4.                   
  5.         System.out.println(
  6.         
  7.         printCompilationInfo();  
  8.         System.out.println(
  9.         
  10.         printRuntimeInfo();  
  11.         System.out.println(
  12.         
  13.         printGarbageCollectorInfo();  
  14.         System.out.println(
  15.         
  16.         printMemoryPoolInfo();  
  17.         System.out.println(
  18.           
  19.       
  20.     
  21.         
  22.         
  23.         
  24.         
  25.           
  26.             
  27.             
  28.             System.out.println(
  29.             System.out.println(
  30.             
  31.             
  32.             System.out.println(
  33.             System.out.println(
  34.     }  
  35.     
  36.             
  37. []) 
  38.             method.setAccessible(
  39.         } 
  40.                 
  41.                 
  42.             
  43.             
  44.             
  45.     }  
  46.     
  47.         System.out.println(
  48.         
  49.         }  
  50.       
  51.         ClassLoadingMXBean classLoad= ManagementFactory.getClassLoadingMXBean();  
  52.         System.out.println(
  53.           
  54.       
  55.         RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();  
  56.         System.out.println(
  57.         System.out.println(
  58.         System.out.println(
  59.         System.out.println(
  60.         
  61.         
  62.         
  63.         List args = runtime.getInputArguments();  
  64.             System.out.println(
  65.                 System.out.println(arg);  
  66.         }  
  67.         System.out.println(
  68.     }  
  69.     
  70.  managers = ManagementFactory.getMemoryManagerMXBeans();  
  71.         
  72.                 System.out.println(
  73.     }  
  74.     
  75.  garbages = ManagementFactory.getGarbageCollectorMXBeans();  
  76.         
  77.     }  
  78.     
  79.         MemoryUsage headMemory = memory.getHeapMemoryUsage();  
  80.         System.out.println(
  81.         System.out.println(
  82.         System.out.println(
  83.         System.out.println(
  84.         System.out.println(
  85.         System.out.println(
  86.         System.out.println(
  87.       
  88.         List pools = ManagementFactory.getMemoryPoolMXBeans();  
  89.             
  90.                 
  91.             }  
  92.     }  
  93.     
  94.         System.out.println(
  95.         
  96.          
  97.             System.out.println(
  98.             
  99.                         +
  100.             }  
  101.         
  102.  
  103.             ThreadInfo[] threadInfos = thread.getThreadInfo(threadIds);  
  104.             System.out.println(
  105.                 System.out.println(
  106.             }  
  107.           
  108.       
  109.         
  110.                 || 
  111. }  

<div class="dp-highlighter bg_plain">
<div class="bar">
<div class="tools">
[plain] <a class="ViewSource" title="view plain" href="http://blog.csdn.net/dream_broken/article/details/49759043#"&gt;view plain<span data-mod="popu_168"><span data-mod="popu_168"> <a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/dream_broken/article/details/49759043#"&gt;copy

 
  1. 系统名称:Windows 7  
  2. 操作系统的架构:amd64  
  3. 总物理内存(M):6041  
  4. 剩余物理内存(M):653  
  5. 已用交换空间(M):15817  
  6. ===========打印编译信息==========  
  7. 名称:HotSpot 64-Bit Tiered Compilers  
  8. 总编译时间:0秒  
  9. 已加载类总数:410  
  10. 已卸载类总数:0  
  11. 进程PID=386220  
  12. 名称:Java Virtual Machine Specification  
  13. jvm规范运营商:Oracle Corporation  
  14. jvm启动时间(毫秒):1447134405258  
  15. 获取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=  
  16. , 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}  
  17. jvm名称:Java HotSpot(TM) 64-Bit Server VM  
  18. jvm实现版本:24.80-b11  
  19. -Dfile.encoding=UTF-8  
  20. 引导类路径: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  
  21. MysqL5.7\MysqL Server 5.7\bin;D:\MysqL5.7\MysqL Utilities 1.3.5\;D:\mongoDB;.  
  22. ===========打印内存管理器信息==========  
  23. 名称=CodeCacheManager,管理的内存区=[Code Cache],ObjectName=java.lang:type=MemoryManager,name=CodeCacheManager  
  24. vm内存管理器:名称=PS Scavenge,管理的内存区=[PS Eden Space, PS Survivor Space],ObjectName=java.lang:type=GarbageCollector,name=PS Scavenge  
  25. 名称=PS MarkSweep, PS Survivor Space, PS Old Gen, PS Perm Gen],name=PS MarkSweep  
  26. ===========打印垃圾回收信息==========  
  27. 垃圾收集器:名称=PS Scavenge,收集=0,总花费时间=0,内存区名称=[PS Eden Space, PS Survivor Space]  
  28. 垃圾收集器:名称=PS MarkSweep, PS Perm Gen]  
  29. head堆:  
  30.     最大(上限)(M):1344  
  31.     提交的内存(已申请)(M):91  
  32. non-head非堆:  
  33.     最大(上限)(M):130  
  34.     提交的内存(已申请)(M):23  
  35. ===========打印vm各内存区信息==========  
  36.     名称=Code Cache  
  37.      ObjectName=java.lang:type=MemoryPool,name=Code Cache  
  38.     最大(上限)(M)=48  
  39.     已提交(已申请)(M)=2  
  40. vm内存区:  
  41. 名称=PS Eden Space  
  42.     所属内存管理者=[PS MarkSweep, PS Scavenge]  
  43.     初始大小(M)=24  
  44.     已用大小(M)=1  
  45.     使用率=6%  
  46.     名称=PS Survivor Space  
  47.      ObjectName=java.lang:type=MemoryPool,name=PS Survivor Space  
  48.     最大(上限)(M)=3  
  49.     已提交(已申请)(M)=3  
  50. vm内存区:  
  51. 名称=PS Old Gen  
  52.     所属内存管理者=[PS MarkSweep]  
  53.     初始大小(M)=63  
  54.     已用大小(M)=0  
  55.     使用率=0%  
  56.     名称=PS Perm Gen  
  57.      ObjectName=java.lang:type=MemoryPool,name=PS Perm Gen  
  58.     最大(上限)(M)=82  
  59.     已提交(已申请)(M)=21  
  60. ===========打印线程==========  
  61. 仍活动的线程总数=5  
  62. 线程总数(被创建并执行过的线程总数)=5  
  63. 所有线程信息:  
  64. 名称                    状态                  线程id  
  65.         Attach Listener                 RUNNABLE                    5  
  66.         Finalizer                   WAITING                 3  
  67.         main                    RUNNABLE                    1  
原文链接:https://www.f2er.com/jvm/72298.html

猜你在找的JVM相关文章