- /**
- * 用戶可以通過MXBean可以管理和監視虛擬機。
- */
- public class JDKMBean {
- /**
- * MemoryMXBean是Java 虛擬機的內存系統的管理接口 Java 虛擬機具有此接口的實現類的單一實例
- */
- public static void printMemoryMXBean() {
- // 獲得單一實例
- MemoryMXBean instance = ManagementFactory.getMemoryMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回用於對象分配的堆的當前內存使用量
- System.out.printf("%s: %s%n", "HeapMemoryUsage",
- instance.getHeapMemoryUsage());
- // 返回 Java 虛擬機使用的非堆內存的當前使用量
- System.out.printf("%s: %s%n", "getNonHeapMemoryUsage",
- instance.getNonHeapMemoryUsage());
- // 運行垃圾回收器
- instance.gc();
- }
- /**
- * ClassLoadingMXBean是Java 虛擬機的類加載系統的管理接口 Java 虛擬機具有此接口的實現類的單個實例
- */
- public static void printClassLoadingMXBean() {
- // 獲得單一實例
- ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回當前加載到 Java 虛擬機中的類的數量
- System.out.printf("%s: %s%n", "LoadedClassCount",
- instance.getLoadedClassCount());
- // 返回自 Java 虛擬機開始執行到目前已經加載的類的總數
- System.out.printf("%s: %s%n", "TotalLoadedClassCount",
- instance.getTotalLoadedClassCount());
- // 返回自 Java 虛擬機開始執行到目前已經卸載的類的總數
- System.out.printf("%s: %s%n", "UnloadedClassCount",
- instance.getUnloadedClassCount());
- }
- /**
- * ThreadMXBean是Java 虛擬機線程系統的管理接口 Java 虛擬機具有此接口的實現類的單個實例
- */
- public static void printThreadMXBean() {
- // 獲得單一實例
- ThreadMXBean instance = ManagementFactory.getThreadMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回活動線程的當前數目,包括守護線程和非守護線程。
- 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");
- // 返回活動守護線程的當前數目
- System.out.printf("%s: %s%n", "DaemonThreadCount",
- instance.getDaemonThreadCount());
- // 返回自從 Java 虛擬機啓動或峯值重置以來峯值活動線程計數
- System.out.printf("%s: %s%n", "PeakThreadCount",
- instance.getPeakThreadCount());
- // 返回當前線程的總 CPU 時間
- System.out.printf("%s: %s%n", "CurrentThreadCpuTime",
- instance.getCurrentThreadCpuTime());
- // 返回當前線程在用戶模式中執行的 CPU 時間
- System.out.printf("%s: %s%n", "CurrentThreadUserTime",
- instance.getCurrentThreadUserTime());
- }
- /**
- * RuntimeMXBean是Java 虛擬機的運行時系統的管理接口 Java 虛擬機具有此接口的實現類的單個實例
- */
- public static void printRuntimeMXBean() {
- // 獲得單一實例
- RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回由引導類加載器用於搜索類文件的引導類路徑
- System.out.printf("%s: %s%n", "BootClassPath",
- instance.getBootClassPath());
- // 返回系統類加載器用於搜索類文件的 Java 類路徑
- System.out.printf("%s: %s%n", "ClassPath", instance.getClassPath());
- // 返回傳遞給 Java 虛擬機的輸入變量,其中不包括傳遞給 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());
- // 返回正在運行的 Java 虛擬機實現的管理接口的規範版本
- System.out.printf("%s: %s%n", "ManagementSpecVersion",
- instance.getManagementSpecVersion());
- // 返回表示正在運行的 Java 虛擬機的名稱
- System.out.printf("%s: %s%n", "Name", instance.getName());
- // 返回 Java 虛擬機規範名稱
- System.out.printf("%s: %s%n", "SpecName", instance.getSpecName());
- // 返回 Java 虛擬機規範供應商
- System.out.printf("%s: %s%n", "SpecVendor", instance.getSpecVendor());
- // 返回 Java 虛擬機規範版本
- System.out.printf("%s: %s%n", "SpecVersion", instance.getSpecVersion());
- // 返回 Java 虛擬機實現名稱
- System.out.printf("%s: %s%n", "VmName", instance.getVmName());
- // 返回 Java 虛擬機實現供應商
- System.out.printf("%s: %s%n", "VmVendor", instance.getVmVendor());
- // 返回 Java 虛擬機實現版本
- System.out.printf("%s: %s%n", "VmVersion", instance.getVmVersion());
- // 返回 Java 虛擬機的啓動時間
- System.out.printf("%s: %s%n", "StartTime", instance.getStartTime());
- // 返回 Java 虛擬機的正常運行時間
- System.out.printf("%s: %s%n", "Uptime", instance.getUptime());
- }
- /**
- * OperatingSystemMXBean是操作系統的管理接口 Java 虛擬機具有此接口的實現類的單個實例
- */
- public static void printOperatingSystemMXBean() {
- // 獲得單一實例
- OperatingSystemMXBean instance = ManagementFactory
- .getOperatingSystemMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回操作系統的架構
- System.out.printf("%s: %s%n", "Arch", instance.getArch());
- // 返回 Java 虛擬機可以使用的處理器數目
- System.out.printf("%s: %s%n", "AvailableProcessors",
- instance.getAvailableProcessors());
- // 返回操作系統名稱
- System.out.printf("%s: %s%n", "Name", instance.getName());
- // 返回操作系統版本
- System.out.printf("%s: %s%n", "Version", instance.getVersion());
- }
- /**
- * CompilationMXBean是Java 虛擬機的編譯系統的管理接口 Java 虛擬機具有此接口的實現類的單個實例
- */
- public static void printCompilationMXBean() {
- // 獲得單一實例
- CompilationMXBean instance = ManagementFactory.getCompilationMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回即時 (JIT) 編譯器的名稱
- System.out.printf("%s: %s%n", "Name", instance.getName());
- // 返回在編譯上花費的累積耗費時間的近似值
- System.out.printf("%s: %s%n", "TotalCompilationTime",
- instance.getTotalCompilationTime());
- }
- /**
- * GarbageCollectorMXBean是Java 虛擬機的垃圾回收的管理接口 Java 虛擬機可能具有此接口的實現類的一個或多個實例
- */
- public static void printGarbageCollectorMXBean() {
- // 獲得所有實例
- List<GarbageCollectorMXBean> instances = ManagementFactory
- .getGarbageCollectorMXBeans();
- System.out.printf("%n---%s---%n",
- GarbageCollectorMXBean.class.getName());
- // 遍歷每個實例
- for (GarbageCollectorMXBean instance : instances) {
- // 返回垃圾收集器的名字
- System.out.printf("***%s: %s***%n", "Name", instance.getName());
- // 返回已發生的回收的總次數
- System.out.printf("%s: %s%n", "CollectionCount",
- instance.getCollectionCount());
- // 返回近似的累積回收時間
- System.out.printf("%s: %s%n", "CollectionTime",
- instance.getCollectionTime());
- }
- }
轉自雲代碼