<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    監(jiān)控與管理虛擬機(jī)

    Posted on 2009-12-21 20:51 啥都寫點(diǎn) 閱讀(398) 評論(0)  編輯  收藏 所屬分類: J2SE
         本例介紹如何監(jiān)控和管理Java虛擬機(jī),包括獲取Java虛擬機(jī)的內(nèi)存使用情況、線程數(shù)、運(yùn)行時(shí)間等。J2SE 5.0中使用Bean監(jiān)控和管理Java虛擬機(jī)。

         java.lang.management.ManagementFactory是管理Bean的工廠類,通過它的get系列方法能夠獲得不同的管理Bean的實(shí)例。
         Java提供了如下幾個(gè)管理Bean:
                 java.lang.management.MemoryMXBean:該Bean用于管理Java虛擬機(jī)的內(nèi)存系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)實(shí)例。
                 java.lang.management.ClassLoadingMXBean:該Bean用于管理Java虛擬機(jī)的類加載系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)實(shí)例。
                 java.lang.management.ThreadMXBean:該Bean用于管理Java虛擬機(jī)的線程系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)實(shí)例。
                 java.lang.management.RuntimeMXBean:該Bean用于管理Java虛擬機(jī)的運(yùn)行時(shí)系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)實(shí)例。
                 java.lang.management.OperatingSystemMXBean:該Bean用于管理操作系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)實(shí)例。
                 java.lang.management.CompilationMXBean:該Bean用于管理Java虛擬機(jī)的編譯系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)實(shí)例。
                 java.lang.management.GarbageCollectorMXBean:該Bean用于管理Java虛擬機(jī)的垃圾回收系統(tǒng)。一個(gè)Java虛擬機(jī)具有一個(gè)或者多個(gè)實(shí)例。



    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.OperatingSystemMXBean;
    import java.lang.management.RuntimeMXBean;
    import java.lang.management.ThreadMXBean;
    import java.util.List;

    /**
     * 用戶可以通過MXBean可以管理和監(jiān)視虛擬機(jī)。
     
    */

    public class JDKMBean {

        
    /**
         * MemoryMXBean是Java 虛擬機(jī)的內(nèi)存系統(tǒng)的管理接口 
         * Java 虛擬機(jī)具有此接口的實(shí)現(xiàn)類的單一實(shí)例
         
    */

        
    public static void printMemoryMXBean() {
            
    // 獲得單一實(shí)例
            MemoryMXBean instance = ManagementFactory.getMemoryMXBean();
            System.out.printf(
    "%n---%s---%n", instance.getClass().getName());
            
    // 返回用于對象分配的堆的當(dāng)前內(nèi)存使用量
            System.out.printf("%s: %s%n""HeapMemoryUsage", instance
                    .getHeapMemoryUsage());
            
    // 返回 Java 虛擬機(jī)使用的非堆內(nèi)存的當(dāng)前使用量
            System.out.printf("%s: %s%n""getNonHeapMemoryUsage", instance
                    .getNonHeapMemoryUsage());
            
    // 運(yùn)行垃圾回收器
            instance.gc();
        }


        
    /**
         * ClassLoadingMXBean是Java 虛擬機(jī)的類加載系統(tǒng)的管理接口 
         * Java 虛擬機(jī)具有此接口的實(shí)現(xiàn)類的單個(gè)實(shí)例
         
    */

        
    public static void printClassLoadingMXBean() {
            
    // 獲得單一實(shí)例
            ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean();
            System.out.printf(
    "%n---%s---%n", instance.getClass().getName());
            
    // 返回當(dāng)前加載到 Java 虛擬機(jī)中的類的數(shù)量
            System.out.printf("%s: %s%n""LoadedClassCount", instance
                    .getLoadedClassCount());
            
    // 返回自 Java 虛擬機(jī)開始執(zhí)行到目前已經(jīng)加載的類的總數(shù)
            System.out.printf("%s: %s%n""TotalLoadedClassCount", instance
                    .getTotalLoadedClassCount());
            
    // 返回自 Java 虛擬機(jī)開始執(zhí)行到目前已經(jīng)卸載的類的總數(shù)
            System.out.printf("%s: %s%n""UnloadedClassCount", instance
                    .getUnloadedClassCount());
        }


        
    /**
         * ThreadMXBean是Java 虛擬機(jī)線程系統(tǒng)的管理接口 
         * Java 虛擬機(jī)具有此接口的實(shí)現(xiàn)類的單個(gè)實(shí)例
         
    */

        
    public static void printThreadMXBean() {
            
    // 獲得單一實(shí)例
            ThreadMXBean instance = ManagementFactory.getThreadMXBean();
            System.out.printf(
    "%n---%s---%n", instance.getClass().getName());
            
    // 返回活動線程的當(dāng)前數(shù)目,包括守護(hù)線程和非守護(hù)線程。
            System.out.printf("%s: %s%n""ThreadCount", instance.getThreadCount());
            
    // 返回活動線程 ID
            System.out.printf("%s: %n""Thread IDs");
            
    long[] ids = instance.getAllThreadIds();
            
    for (long id : ids) {
                System.out.printf(
    "%s;  ", id);
            }

            System.out.printf(
    "%n");
            
    // 返回活動守護(hù)線程的當(dāng)前數(shù)目
            System.out.printf("%s: %s%n""DaemonThreadCount", instance
                    .getDaemonThreadCount());
            
    // 返回自從 Java 虛擬機(jī)啟動或峰值重置以來峰值活動線程計(jì)數(shù)
            System.out.printf("%s: %s%n""PeakThreadCount", instance
                    .getPeakThreadCount());
            
    // 返回當(dāng)前線程的總 CPU 時(shí)間
            System.out.printf("%s: %s%n""CurrentThreadCpuTime", instance
                    .getCurrentThreadCpuTime());
            
    // 返回當(dāng)前線程在用戶模式中執(zhí)行的 CPU 時(shí)間
            System.out.printf("%s: %s%n""CurrentThreadUserTime", instance
                    .getCurrentThreadUserTime());
        }


        
    /**
         * RuntimeMXBean是Java 虛擬機(jī)的運(yùn)行時(shí)系統(tǒng)的管理接口 
         * Java 虛擬機(jī)具有此接口的實(shí)現(xiàn)類的單個(gè)實(shí)例
         
    */

        
    public static void printRuntimeMXBean() {
            
    // 獲得單一實(shí)例
            RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean();
            System.out.printf(
    "%n---%s---%n", instance.getClass().getName());
            
    // 返回由引導(dǎo)類加載器用于搜索類文件的引導(dǎo)類路徑
            System.out.printf("%s: %s%n""BootClassPath", instance
                    .getBootClassPath());
            
    // 返回系統(tǒng)類加載器用于搜索類文件的 Java 類路徑
            System.out.printf("%s: %s%n""ClassPath", instance.getClassPath());
            
    // 返回傳遞給 Java 虛擬機(jī)的輸入變量,其中不包括傳遞給 main 方法的變量
            System.out.printf("%s%n""InputArguments");
            List
    <String> args = instance.getInputArguments();
            
    for (String arg : args) {
                System.out.printf(
    "%s;  ", arg);
            }

            
    // 返回 Java 庫路徑
            System.out.printf("%s: %s%n""LibraryPath", instance.getLibraryPath());
            
    // 返回正在運(yùn)行的 Java 虛擬機(jī)實(shí)現(xiàn)的管理接口的規(guī)范版本
            System.out.printf("%s: %s%n""ManagementSpecVersion", instance
                    .getManagementSpecVersion());
            
    // 返回表示正在運(yùn)行的 Java 虛擬機(jī)的名稱
            System.out.printf("%s: %s%n""Name", instance.getName());

            
    // 返回 Java 虛擬機(jī)規(guī)范名稱
            System.out.printf("%s: %s%n""SpecName", instance.getSpecName());
            
    // 返回 Java 虛擬機(jī)規(guī)范供應(yīng)商
            System.out.printf("%s: %s%n""SpecVendor", instance.getSpecVendor());
            
    // 返回 Java 虛擬機(jī)規(guī)范版本
            System.out.printf("%s: %s%n""SpecVersion", instance.getSpecVersion());

            
    // 返回 Java 虛擬機(jī)實(shí)現(xiàn)名稱
            System.out.printf("%s: %s%n""VmName", instance.getVmName());
            
    // 返回 Java 虛擬機(jī)實(shí)現(xiàn)供應(yīng)商
            System.out.printf("%s: %s%n""VmVendor", instance.getVmVendor());
            
    // 返回 Java 虛擬機(jī)實(shí)現(xiàn)版本
            System.out.printf("%s: %s%n""VmVersion", instance.getVmVersion());

            
    // 返回 Java 虛擬機(jī)的啟動時(shí)間
            System.out.printf("%s: %s%n""StartTime", instance.getStartTime());
            
    // 返回 Java 虛擬機(jī)的正常運(yùn)行時(shí)間
            System.out.printf("%s: %s%n""Uptime", instance.getUptime());
        }


        
    /**
         * OperatingSystemMXBean是操作系統(tǒng)的管理接口 
         * Java 虛擬機(jī)具有此接口的實(shí)現(xiàn)類的單個(gè)實(shí)例
         
    */

        
    public static void printOperatingSystemMXBean() {
            
    // 獲得單一實(shí)例
            OperatingSystemMXBean instance = ManagementFactory
                    .getOperatingSystemMXBean();
            System.out.printf(
    "%n---%s---%n", instance.getClass().getName());
            
    // 返回操作系統(tǒng)的架構(gòu)
            System.out.printf("%s: %s%n""Arch", instance.getArch());
            
    // 返回 Java 虛擬機(jī)可以使用的處理器數(shù)目
            System.out.printf("%s: %s%n""AvailableProcessors", instance
                    .getAvailableProcessors());
            
    // 返回操作系統(tǒng)名稱
            System.out.printf("%s: %s%n""Name", instance.getName());
            
    // 返回操作系統(tǒng)版本
            System.out.printf("%s: %s%n""Version", instance.getVersion());
        }


        
    /**
         * CompilationMXBean是Java 虛擬機(jī)的編譯系統(tǒng)的管理接口 
         * Java 虛擬機(jī)具有此接口的實(shí)現(xiàn)類的單個(gè)實(shí)例
         
    */

        
    public static void printCompilationMXBean() {
            
    // 獲得單一實(shí)例
            CompilationMXBean instance = ManagementFactory.getCompilationMXBean();
            System.out.printf(
    "%n---%s---%n", instance.getClass().getName());
            
    // 返回即時(shí) (JIT) 編譯器的名稱
            System.out.printf("%s: %s%n""Name", instance.getName());
            
    // 返回在編譯上花費(fèi)的累積耗費(fèi)時(shí)間的近似值
            System.out.printf("%s: %s%n""TotalCompilationTime", instance
                    .getTotalCompilationTime());
        }


        
    /**
         * GarbageCollectorMXBean是Java 虛擬機(jī)的垃圾回收的管理接口 
         * Java 虛擬機(jī)可能具有此接口的實(shí)現(xiàn)類的一個(gè)或多個(gè)實(shí)例
         
    */

        
    public static void printGarbageCollectorMXBean() {
            
    // 獲得所有實(shí)例
            List<GarbageCollectorMXBean> instances = ManagementFactory
                    .getGarbageCollectorMXBeans();
            System.out.printf(
    "%n---%s---%n", GarbageCollectorMXBean.class
                    .getName());
            
    // 遍歷每個(gè)實(shí)例
            for (GarbageCollectorMXBean instance : instances) {
                
    // 返回垃圾收集器的名字
                System.out.printf("***%s: %s***%n""Name", instance.getName());
                
    // 返回已發(fā)生的回收的總次數(shù)
                System.out.printf("%s: %s%n""CollectionCount", instance
                        .getCollectionCount());
                
    // 返回近似的累積回收時(shí)間
                System.out.printf("%s: %s%n""CollectionTime", instance
                        .getCollectionTime());
            }

        }


        
    public static void main(String[] args) {
            JDKMBean.printOperatingSystemMXBean();
            JDKMBean.printRuntimeMXBean();
            JDKMBean.printClassLoadingMXBean();
            JDKMBean.printCompilationMXBean();
            JDKMBean.printMemoryMXBean();
            JDKMBean.printThreadMXBean();
            JDKMBean.printGarbageCollectorMXBean();
        }

    }


     

                                                                                                           --    學(xué)海無涯
            

    主站蜘蛛池模板: 亚洲欧美国产日韩av野草社区| 亚洲国产精品VA在线观看麻豆| va天堂va亚洲va影视中文字幕| 免费人成在线观看网站品爱网| 亚洲亚洲人成综合网络| 四虎影视永久在线精品免费| 在线观看国产情趣免费视频 | 国产亚洲精品xxx| 亚洲免费无码在线| 国产成人综合亚洲亚洲国产第一页| 又长又大又粗又硬3p免费视频| 亚洲国产综合精品中文字幕 | 亚洲欧美成人综合久久久| 精品国产免费观看一区| 亚洲欧美第一成人网站7777| 国产免费啪嗒啪嗒视频看看| 免费视频精品一区二区| 亚洲精品亚洲人成在线观看下载| 国产精品成人免费观看| 亚洲av无码无在线观看红杏| 99久久人妻精品免费一区| 亚洲av永久无码精品三区在线4 | 黄视频在线观看免费| 亚洲AV天天做在线观看| 精品国产免费人成电影在线观看| 亚洲经典在线观看| 日韩精品免费电影| 无码精品人妻一区二区三区免费| 亚洲精品无码Av人在线观看国产 | 亚洲精华国产精华精华液| 亚洲AV无码一区二区三区国产| 一区二区三区无码视频免费福利| 亚洲日韩国产精品无码av| 午夜dj免费在线观看| 中文在线免费看视频| 久久亚洲日韩看片无码| 免费观看的毛片手机视频| 精精国产www视频在线观看免费| 亚洲精品成人久久| 亚洲国产成人久久一区WWW| 一级做a爰全过程免费视频|