java.lang.management

來源:互聯網
上載者:User

標籤:

  1.   java.lang.management 提供管理介面,用於監視和管理 JAVA 虛擬機器以及 JAVA 虛擬機器在其上啟動並執行作業系統。它同時允許從本地和遠程對正在啟動並執行 Java 虛擬機器進行監視和管理。

  2. 主要介面:

    ClassLoadingMXBean  Java虛擬機器的類載入系統。

    CompilationMXBean  Java虛擬機器的編譯系統。

    MemoryMXBean  Java虛擬機器的記憶體系統。

    ThreadMXBean  Java虛擬機器的線程系統。

    RuntimeMXBean  Java虛擬機器的運行時系統。

    OperatingSystemMXBean  Java虛擬機器在其上啟動並執行作業系統。

    GarbageCollectorMXBean  Java虛擬機器中的記憶體回收行程。

    MemoryManagerMXBean  Java虛擬機器中的記憶體管理器。

    MemoryPoolMXBean   Java虛擬機器中的的記憶體池。 

  3. 程式碼範例:

package management;import java.lang.management.ClassLoadingMXBean;import java.lang.management.CompilationMXBean;import java.lang.management.GarbageCollectorMXBean;import java.lang.management.ManagementFactory;import java.lang.management.MemoryMXBean;import java.lang.management.MemoryManagerMXBean;import java.lang.management.MemoryPoolMXBean;import java.lang.management.MemoryUsage;import java.lang.management.OperatingSystemMXBean;import java.lang.management.RuntimeMXBean;import java.lang.management.ThreadMXBean;import java.util.List;import javax.management.MBeanServerConnection;public class MBeanDemo {    public static void main(String[] args) {        showJvmInfo();        showMemoryInfo();        showSystem();        showClassLoading();        showCompilation();        showThread();        showGarbageCollector();        showMemoryManager();        showMemoryPool();    }    /**     * Java 虛擬機器的運行時系統     */    public static void showJvmInfo() {        RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();        String vendor = mxbean.getVmVendor();        System.out.println("jvm name:" + mxbean.getVmName());        System.out.println("jvm version:" + mxbean.getVmVersion());        System.out.println("jvm bootClassPath:" + mxbean.getBootClassPath());        System.out.println("jvm start time:" + mxbean.getStartTime());    }    /**     * Java 虛擬機器的記憶體系統     */    public static void showMemoryInfo() {        MemoryMXBean mem = ManagementFactory.getMemoryMXBean();        MemoryUsage heap = mem.getHeapMemoryUsage();        System.out.println("Heap committed:" + heap.getCommitted() + " init:" + heap.getInit() + " max:"                           + heap.getMax() + " used:" + heap.getUsed());    }    /**     * Java 虛擬機器在其上啟動並執行作業系統     */    public static void showSystem() {        OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();        System.out.println("Architecture: " + op.getArch());        System.out.println("Processors: " + op.getAvailableProcessors());        System.out.println("System name: " + op.getName());        System.out.println("System version: " + op.getVersion());        System.out.println("Last minute load: " + op.getSystemLoadAverage());    }        /**     * Java 虛擬機器的類載入系統     */    public static void showClassLoading(){        ClassLoadingMXBean cl = ManagementFactory.getClassLoadingMXBean();        System.out.println("TotalLoadedClassCount: " + cl.getTotalLoadedClassCount());        System.out.println("LoadedClassCount" + cl.getLoadedClassCount());        System.out.println("UnloadedClassCount:" + cl.getUnloadedClassCount());    }        /**     * Java 虛擬機器的編譯系統     */    public static void showCompilation(){        CompilationMXBean com = ManagementFactory.getCompilationMXBean();        System.out.println("TotalCompilationTime:" + com.getTotalCompilationTime());        System.out.println("name:" + com.getName());    }        /**     * Java 虛擬機器的線程系統     */    public static void showThread(){        ThreadMXBean thread = ManagementFactory.getThreadMXBean();        System.out.println("ThreadCount" + thread.getThreadCount());        System.out.println("AllThreadIds:" + thread.getAllThreadIds());        System.out.println("CurrentThreadUserTime" + thread.getCurrentThreadUserTime());        //......還有其他很多資訊    }        /**     * Java 虛擬機器中的記憶體回收行程。     */    public static void showGarbageCollector(){        List<GarbageCollectorMXBean> gc = ManagementFactory.getGarbageCollectorMXBeans();        for(GarbageCollectorMXBean GarbageCollectorMXBean : gc){            System.out.println("name:" + GarbageCollectorMXBean.getName());             System.out.println("CollectionCount:" + GarbageCollectorMXBean.getCollectionCount());            System.out.println("CollectionTime" + GarbageCollectorMXBean.getCollectionTime());          }    }        /**     * Java 虛擬機器中的記憶體管理器     */    public static void showMemoryManager(){        List<MemoryManagerMXBean> mm = ManagementFactory.getMemoryManagerMXBeans();        for(MemoryManagerMXBean eachmm: mm){            System.out.println("name:" + eachmm.getName());            System.out.println("MemoryPoolNames:" + eachmm.getMemoryPoolNames().toString());        }    }        /**     * Java 虛擬機器中的記憶體池     */    public static void showMemoryPool(){        List<MemoryPoolMXBean> mps = ManagementFactory.getMemoryPoolMXBeans();        for(MemoryPoolMXBean mp : mps){            System.out.println("name:" + mp.getName());            System.out.println("CollectionUsage:" + mp.getCollectionUsage());            System.out.println("type:" + mp.getType());        }    }        /**     * 訪問 MXBean 的方法的三種方法     */    public static void visitMBean(){                //第一種直接調用同一 Java 虛擬機器內的 MXBean 中的方法。        RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();        String vendor1 = mxbean.getVmVendor();        System.out.println("vendor1:" + vendor1);                //第二種通過一個串連到正在啟動並執行虛擬機器的平台 MBeanServer 的 MBeanServerConnection。        MBeanServerConnection mbs = null;        // Connect to a running JVM (or itself) and get MBeanServerConnection        // that has the JVM MXBeans registered in it        /*        try {            // Assuming the RuntimeMXBean has been registered in mbs            ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);            String vendor2 = (String) mbs.getAttribute(oname, "VmVendor");            System.out.println("vendor2:" + vendor2);        } catch (Exception e) {            e.printStackTrace();        }        */                //第三種使用 MXBean 代理//        MBeanServerConnection mbs3 = null;//        RuntimeMXBean proxy;//        try {//            proxy = ManagementFactory.newPlatformMXBeanProxy(mbs3,ManagementFactory.RUNTIME_MXBEAN_NAME,//                                                     RuntimeMXBean.class);//            String vendor = proxy.getVmVendor();//        } catch (IOException e) {//            e.printStackTrace();//        }    }}

4.控制台列印資訊:

jvm name:Java HotSpot(TM) 64-Bit Server VMjvm version:24.75-b04jvm bootClassPath:C:\Program Files\Java\jdk1.7.0_75\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_75\jre\classesjvm start time:1439797054990Heap committed:127926272 init:132884352 max:1890582528 used:2045136Architecture: amd64Processors: 2System name: Windows 7System version: 6.1Last minute load: -1.0TotalLoadedClassCount: 443LoadedClassCount443UnloadedClassCount:0TotalCompilationTime:3name:HotSpot 64-Bit Tiered CompilersThreadCount5AllThreadIds:[[email protected]CurrentThreadUserTime78000500name:PS ScavengeCollectionCount:0CollectionTime0name:PS MarkSweepCollectionCount:0CollectionTime0name:CodeCacheManagerMemoryPoolNames:[Ljava.lang.String;@397dea61name:PS ScavengeMemoryPoolNames:[Ljava.lang.String;@79a6a3c3name:PS MarkSweepMemoryPoolNames:[Ljava.lang.String;@2b49959aname:Code CacheCollectionUsage:nulltype:Non-heap memoryname:PS Eden SpaceCollectionUsage:init = 34078720(33280K) used = 0(0K) committed = 0(0K) max = 698351616(681984K)type:Heap memoryname:PS Survivor SpaceCollectionUsage:init = 5242880(5120K) used = 0(0K) committed = 0(0K) max = 5242880(5120K)type:Heap memoryname:PS Old GenCollectionUsage:init = 88604672(86528K) used = 0(0K) committed = 0(0K) max = 1417674752(1384448K)type:Heap memoryname:PS Perm GenCollectionUsage:init = 22020096(21504K) used = 0(0K) committed = 0(0K) max = 85983232(83968K)type:Non-heap memory

  


java.lang.management

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.