通过JVM获取相关的服务器信息 .
分类: j2ee 2009-05-12 16:12 1034人阅读 评论(0) 收藏 举报 在我们想监控我们的JVM状态的时候,除了可以通过JMX这类jvm提供的接口服务,还是可以自己通过程序来编写一些接口来获取服务器状态信息。 以下代码我在jdk1.5.10版本上测试通过。 [java] view plaincopyprint? 01.import java.lang.management.CompilationMXBean; 02.import java.lang.management.GarbageCollectorMXBean; 03.import java.lang.management.MemoryMXBean; 04.import java.lang.management.MemoryPoolMXBean; 05.import java.lang.management.RuntimeMXBean; 06.import java.lang.management.ThreadMXBean; 07.import java.util.List; 08.import sun.management.ManagementFactory; 09.import com.sun.management.OperatingSystemMXBean; 10. 11. 12./** 13. * java获取所在操作系统的信息,JVM的相关信息 14. * @author kongqz 15. * */ 16.public class MyJvm { 17. 18. /** 19. * @param 直接通过jdk来获取系统相关状态,在1.5.0_10-b03版本以上测试通过 20. */ 21. public static void main(String[] args) { 22. 23. System.out.println("=======================通过java来获取相关系统状态============================ "); 24. int i = (int)Runtime.getRuntime().totalMemory()/1024;//Java 虚拟机中的内存总量,以字节为单位 25. System.out.println("总的内存量 i is "+i); 26. int j = (int)Runtime.getRuntime().freeMemory()/1024;//Java 虚拟机中的空闲内存量 27. System.out.println("空闲内存量 j is "+j); 28. System.out.println("最大内存量 is "+Runtime.getRuntime().maxMemory()/1024); 29. 30. System.out.println("=======================OperatingSystemMXBean============================ "); 31. OperatingSystemMXBean osm = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); 32. System.out.println(osm.getFreeSwapSpaceSize()/1024); 33. System.out.println(osm.getFreePhysicalMemorySize()/1024); 34. System.out.println(osm.getTotalPhysicalMemorySize()/1024); 35. 36. //获取操作系统相关信息 37. System.out.println("osm.getArch() "+osm.getArch()); 38. System.out.println("osm.getAvailableProcessors() "+osm.getAvailableProcessors()); 39. System.out.println("osm.getCommittedVirtualMemorySize() "+osm.getCommittedVirtualMemorySize()); 40. System.out.println("osm.getName() "+osm.getName()); 41. System.out.println("osm.getProcessCpuTime() "+osm.getProcessCpuTime()); 42. System.out.println("osm.getVersion() "+osm.getVersion()); 43. //获取整个虚拟机内存使用情况 44. System.out.println("=======================MemoryMXBean============================ "); 45. MemoryMXBean mm=(MemoryMXBean)ManagementFactory.getMemoryMXBean(); 46. System.out.println("getHeapMemoryUsage "+mm.getHeapMemoryUsage()); 47. System.out.println("getNonHeapMemoryUsage "+mm.getNonHeapMemoryUsage()); 48. //获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况 49. System.out.println("=======================ThreadMXBean============================ "); 50. ThreadMXBean tm=(ThreadMXBean)ManagementFactory.getThreadMXBean(); 51. System.out.println("getThreadCount "+tm.getThreadCount()); 52. System.out.println("getPeakThreadCount "+tm.getPeakThreadCount()); 53. System.out.println("getCurrentThreadCpuTime "+tm.getCurrentThreadCpuTime()); 54. System.out.println("getDaemonThreadCount "+tm.getDaemonThreadCount()); 55. System.out.println("getCurrentThreadUserTime "+tm.getCurrentThreadUserTime()); 56. 57. //当前编译器情况 58. System.out.println("=======================CompilationMXBean============================ "); 59. CompilationMXBean gm=(CompilationMXBean)ManagementFactory.getCompilationMXBean(); 60. System.out.println("getName "+gm.getName()); 61. System.out.println("getTotalCompilationTime "+gm.getTotalCompilationTime()); 62. 63. //获取多个内存池的使用情况 64. System.out.println("=======================MemoryPoolMXBean============================ "); 65. List<MemoryPoolMXBean> mpmList=ManagementFactory.getMemoryPoolMXBeans(); 66. for(MemoryPoolMXBean mpm:mpmList){ 67. System.out.println("getUsage "+mpm.getUsage()); 68. System.out.println("getMemoryManagerNames "+mpm.getMemoryManagerNames().toString()); 69. } 70. //获取GC的次数以及花费时间之类的信息 71. System.out.println("=======================MemoryPoolMXBean============================ "); 72. List<GarbageCollectorMXBean> gcmList=ManagementFactory.getGarbageCollectorMXBeans(); 73. for(GarbageCollectorMXBean gcm:gcmList){ 74. System.out.println("getName "+gcm.getName()); 75. System.out.println("getMemoryPoolNames "+gcm.getMemoryPoolNames()); 76. } 77. //获取运行时信息 78. System.out.println("=======================RuntimeMXBean============================ "); 79. RuntimeMXBean rmb=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean(); 80. System.out.println("getClassPath "+rmb.getClassPath()); 81. System.out.println("getLibraryPath "+rmb.getLibraryPath()); 82. System.out.println("getVmVersion "+rmb.getVmVersion()); 83. } 84. 85.}
相关推荐
bulargyzone 2020-10-26
csdnxingyuntian 2020-10-19
Locksk 2020-10-12
liufangbaishi0 2020-09-23
darlingtangli 2020-09-10
lxttiger 2020-08-18
coolrainman 2020-07-28
一支菜鸟 2020-07-27
zhouxihua0 2020-07-27
nangongyanya 2020-07-26
chenkai00 2020-07-26
voiletbin 2020-07-26
ChenRuiyz 2020-07-26
pbaabc 2020-07-23
nbfcome 2020-07-19
liufangbaishi0 2020-07-18
ChenRuiyz 2020-07-18
empireghost 2020-07-10
一支菜鸟 2020-07-06