`
sealbird
  • 浏览: 583888 次
  • 性别: 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.}  
分享到:
评论

相关推荐

    JVM调优工具命令详解.pdf

    本篇文档详细介绍了JVM调优工具的命令使用及其相关知识点,涵盖了内存信息分析、死锁检测、JMX远程监控等方面的命令行工具的使用方法。 首先,文档提到了JPS命令,它用于查看当前运行的Java进程信息,并返回进程ID...

    基于(siger)开发的SpringBoot项目,java获取服务器信息.zip

    这个项目的主要目标是演示如何利用Java编程语言在SpringBoot环境中获取服务器的相关信息。下面将详细阐述SpringBoot、Siger以及如何在Java中获取服务器信息。 SpringBoot是由Pivotal团队提供的全新框架,其设计目的...

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

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

    Java虚拟机(JVM)参数配置说明.doc

    #### 获取JVM命令配置信息的方法 在了解具体参数之前,首先需要知道如何查看可用的JVM参数及其说明。以下是在Windows平台上的示例步骤: 1. **打开CMD命令提示符**:点击开始菜单 -&gt; 所有程序 -&gt; Java -&gt; Java SDK ...

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

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

    使用RMI远程连接JVM.用JMX获取JVM的参数

    本文将深入探讨如何利用RMI远程连接到Java虚拟机(JVM),并通过JMX获取JVM的相关参数。 RMI是Java提供的一种机制,允许在不同JVM之间透明地调用对象的方法,就像这些对象都在同一台机器上一样。RMI的核心组件包括...

    Jvm堆栈dump文件分析

    1. **获取dump文件**:当JVM出现问题时,通过JVM的命令行选项(如`-XX:+HeapDumpOnOutOfMemoryError`)或者使用如`jmap`命令生成heap dump文件。 2. **安装HeadAnalyzer**:解压`ha414.jar`文件,这是一个包含...

    JVM堆栈性能分析.pdf

    尽管不同JVM打印的Thread Dump可能略有差异,但它们通常提供了当前所有活动线程的状态信息以及JVM中所有Java线程的堆栈跟踪详情。这些堆栈信息包括完整的类名、执行的方法以及可能的源代码行号。 **1.2 Thread Dump...

    JVM调优工具11.pdf

    文档中的示例代码通过创建两个线程同时获取两个不同的锁,演示了如何制造一个死锁的场景。然后使用jstack加上进程id来查找死锁的线程。通过这种方式,我们可以识别出Java应用中的死锁问题。 在远程监控方面,JMX...

    java读取服务器硬件信息(windowx+linux+Mac OS)

    Java通过Java虚拟机(JVM)在不同的操作系统上运行,使得开发者可以使用相同的代码库来处理各种硬件信息。 在Windows环境下,Java可以通过Java Native Interface (JNI) 来调用本地API,如Kernel32.dll中的函数,...

    java 查看JVM中所有的线程的活动状况

    要查看JVM中的线程信息,可以使用`ThreadMXBean`的静态工厂方法`ManagementFactory.getThreadMXBean()`获取实例,然后调用相关方法。以下是一个简单的示例代码(参考文件`ThreadAction.java`): ```java import ...

    Tomcat教程-JVM相关工具.docx

    通过不同的参数,我们可以获取更多详细信息: - `-q`:只显示进程ID。 - `-v`:显示每个进程启动时传递给JVM的命令行参数。 - `-m`:显示传递给main方法的参数。 - `-l`:显示main类或jar的完全限定名称。 ...

    独立进程JVM设置.doc

    首先,获取服务器的实际物理内存值至关重要。在Linux环境中,可以通过执行`cat /proc/meminfo | grep MemTotal`命令来获取,单位为KB。了解服务器的总内存有助于合理分配各个Java进程的资源。 其次,需要识别服务器...

    java利用JMX做出不一样的的JVM.docx

    JMX能够帮助我们获取JVM内存状态、CPU利用率、线程信息以及垃圾收集情况等关键指标。此外,它还支持动态调整日志级别,例如log4j可以通过JMX接口在线调整日志级别。 JMX不仅仅是一个规范,它同时提供了一个框架,...

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

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

    hyperic-sigar获取jdk所在服务器状态信息(含代码).rar

    总结来说,Hyperic Sigar是一个强大且灵活的系统监控工具,通过其Java API我们可以轻松获取服务器的各种状态信息,这对于管理和监控Java应用是非常有价值的。在实际项目中,结合日志分析、性能测试等手段,可以更好...

    Java 服务器信息监控

    通过这些信息,我们可以监控内存使用情况,防止内存泄漏,并适时调整JVM的内存配置。 网络监控通常涉及网络接口的带宽使用、连接状态和错误统计。在Java中,`java.net`包提供了`Socket`和`ServerSocket`类用于创建...

    jvm内存参数调优

    其中`libname`为本地代理库文件名,如`hprof`,可用于获取JVM的运行情况,包括CPU、内存、线程等运行数据,并可以输出到指定文件中。`options`是传递给本地库的参数,多个参数间用逗号分隔。在不同的操作系统上,...

    java基础之JVM

    2. **通过网络下载**:从远程服务器获取.class文件。 3. **从压缩文件加载**:如从ZIP或JAR文件中加载。 4. **从特定数据库中提取**:针对某些应用场景,如从专用数据库中提取.class文件。 5. **动态编译**:在运行...

Global site tag (gtag.js) - Google Analytics