分类: 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.}
分享到:
相关推荐
内容:Java代码,获取服务器的基本信息(内存,cpu,存储状态等) 适用场景:服务器均可适用,主要是监测服务器的使用状态。 使用方法: 1.添加工程依赖 <!-- 获取系统信息 --> <groupId>...
SpringBoot结合Sigar获取服务器监控信息提供restful接口的源代码, 并使用swagger生成接口文档, 包括 CPU信息,服务器基本信息,内存信息, JVM信息,磁盘信息等. 有详细的代码注释.
**基于(siger)开发的SpringBoot项目,java获取服务器信息** 该项目为 Java探针 运行前提是 有Jvm环境,集成了Swagger接口 **场景:** 在没有使用 **分布式**的项目,进行集群管理时,有时候来了做服务器监控的...
System信息,从jvm获取 内存信息 操作系统信息 文件系统信息 网络信息 以太网信息
基于(siger)开发的SpringBoot项目,java获取服务器信息 该项目为 Java探针 运行前提是 有Jvm环境,集成了Swagger接口 场景: 在没有使用 分布式的项目,进行集群管理时,有时候来了做服务器监控的需求 如果没有...
Java实现服务器监控相关代码,使用Maven引入了系统服务jar包. 包含:CPU相关信息、內存相关信息、JVM相关信息、服务器相关信息、磁盘相关信息。 CPU相关信息:核心数 CPU总的使用率 CPU系统使用率 CPU用户使用率等
// System信息,从jvm获取 property(); System.out.println("----------------------------------"); // cpu信息 cpu(); System.out.println("----------------------------------"); // 内存信息 memory();...
5.如何从JVM中获取信息来进行调整 -verbose.gc开关可显示gc的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开-xx:+ printgcdetails开关,可以详细了解gc中...
监控第一台服务器 37 Zabbix 用户管理 41 第四章: zabbix 配置 48 配置简介 48 zabbix 主机与组配置 49 zabbix 资产清单 inventory 管理 53 zabbix 监控项 item 56 zabbix 创建监控项 item 56 zabbix item key 详解...
/ 112 5.2.5 服务器JVM进程崩溃 / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 ...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
│ workspace.zip │ 列表生成.reg │ 淘淘商城源代码.zip │ ├─01....│ ├─相关资料 │ │ redis-3.0.1.tar.gz │ │ redis-3.0.2.tar.gz │ │ redis-3.2.1.gem │ │ Redis集群.docx │ │ ...
脚本已内置jvm参数调优和远程监控配置 下载后jvm参数根据实际情况修改即可,根据系统不同 获取服务器ip有所不同, 如果配置远程监控获取服务器ip失败,通过命令查看本机ip信息存放文件 (centos7 :ip addr ;...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
Sigar 第三方获取服务器cpu,内存,jvm等信息,里边包含所有的需要的dll文件。 java 读取系统信息相关jar 包 libsigar-amd64-linux.so libsigar-amd64-solaris.so sigar-amd64-winnt.dll sigar-x86-winnt.dll 解压后...
63.5. 如何从JVM中获取信息来进行调整 46 63.6. Pdm系统JVM调整 47 63.6.1. 服务器:前提内存1G 单CPU 47 63.6.2. 客户机:通过在JNLP文件中设置参数来调整客户端JVM 47 64. 什么时候用assert。 47 65. 什么是java...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...