`
sealbird
  • 浏览: 571342 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

通过JVM获取相关的服务器信息 .

    博客分类:
  • JAVA
阅读更多
分类: 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.}  
分享到:
评论

相关推荐

    springboot监控服务器基本信息代码工具包

    内容:Java代码,获取服务器的基本信息(内存,cpu,存储状态等) 适用场景:服务器均可适用,主要是监测服务器的使用状态。 使用方法: 1.添加工程依赖 &lt;!-- 获取系统信息 --&gt; &lt;groupId&gt;...

    SpringBoot结合Sigar获取服务器监控信息源代码

    SpringBoot结合Sigar获取服务器监控信息提供restful接口的源代码, 并使用swagger生成接口文档, 包括 CPU信息,服务器基本信息,内存信息, JVM信息,磁盘信息等. 有详细的代码注释.

    基于(siger)开发的SpringBoot项目,java获取服务器信息+源代码+文档说明

    **基于(siger)开发的SpringBoot项目,java获取服务器信息** 该项目为 Java探针 运行前提是 有Jvm环境,集成了Swagger接口 **场景:** 在没有使用 **分布式**的项目,进行集群管理时,有时候来了做服务器监控的...

    java(sigar1.6) 获取本地系统信息大全 示例project

    System信息,从jvm获取 内存信息 操作系统信息 文件系统信息 网络信息 以太网信息

    system-monitor:基于(siger)开发的SpringBoot项目,java获取服务器信息

    基于(siger)开发的SpringBoot项目,java获取服务器信息 该项目为 Java探针 运行前提是 有Jvm环境,集成了Swagger接口 场景: 在没有使用 分布式的项目,进行集群管理时,有时候来了做服务器监控的需求 如果没有...

    Java实现服务器监控相关代码

    Java实现服务器监控相关代码,使用Maven引入了系统服务jar包. 包含:CPU相关信息、內存相关信息、JVM相关信息、服务器相关信息、磁盘相关信息。 CPU相关信息:核心数 CPU总的使用率 CPU系统使用率 CPU用户使用率等

    java sigar获得服务器信息

    // System信息,从jvm获取 property(); System.out.println("----------------------------------"); // cpu信息 cpu(); System.out.println("----------------------------------"); // 内存信息 memory();...

    resin-jvm 调优

    5.如何从JVM中获取信息来进行调整 -verbose.gc开关可显示gc的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开-xx:+ printgcdetails开关,可以详细了解gc中...

    ZABBIX从入门到精通v3.0.1+-+运维生存时间(2016).pdf

    监控第一台服务器 37 Zabbix 用户管理 41 第四章: zabbix 配置 48 配置简介 48 zabbix 主机与组配置 49 zabbix 资产清单 inventory 管理 53 zabbix 监控项 item 56 zabbix 创建监控项 item 56 zabbix item key 详解...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 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_API1.6文档(中文)

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ workspace.zip │ 列表生成.reg │ 淘淘商城源代码.zip │ ├─01....│ ├─相关资料 │ │ redis-3.0.1.tar.gz │ │ redis-3.0.2.tar.gz │ │ redis-3.2.1.gem │ │ Redis集群.docx │ │ ...

    server.sh jar包启动、关闭脚本

    脚本已内置jvm参数调优和远程监控配置 下载后jvm参数根据实际情况修改即可,根据系统不同 获取服务器ip有所不同, 如果配置远程监控获取服务器ip失败,通过命令查看本机ip信息存放文件 (centos7 :ip addr ;...

    [Java参考文档].JDK_API 1.6

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java读取系统信息jar包.zip

    Sigar 第三方获取服务器cpu,内存,jvm等信息,里边包含所有的需要的dll文件。 java 读取系统信息相关jar 包 libsigar-amd64-linux.so libsigar-amd64-solaris.so sigar-amd64-winnt.dll sigar-x86-winnt.dll 解压后...

    java面试题

    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参考文档]

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    JavaAPI中文chm文档 part2

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

Global site tag (gtag.js) - Google Analytics