记录 jvm 信息

来源:互联网 发布:陕西软件测试培训 编辑:程序博客网 时间:2024/06/05 04:20

软件包 java.lang.management

提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。

 

接口摘要

ClassLoadingMXBean用于 Java 虚拟机的类加载系统的管理接口。CompilationMXBean用于 Java 虚拟机的编译系统的管理接口。GarbageCollectorMXBean用于 Java 虚拟机的垃圾回收的管理接口。MemoryManagerMXBean内存管理器的管理接口。MemoryMXBeanJava 虚拟机的内存系统的管理接口。MemoryPoolMXBean内存池的管理接口。OperatingSystemMXBean用于操作系统的管理接口,Java 虚拟机在此操作系统上运行。RuntimeMXBeanJava 虚拟机的运行时系统的管理接口。ThreadMXBean

Java 虚拟机线程系统的管理接口。

import org.eclipse.jetty.util.ajax.JSON;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.lang.management.*;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;public class JvmStatus {    public static void main( )   {        StringBuilder stringBuilder = new StringBuilder();        showJvmInfo(stringBuilder);        showMemoryInfo(stringBuilder);        showSystem(stringBuilder);        showClassLoading(stringBuilder);        showCompilation(stringBuilder);        showThread(stringBuilder);        showGarbageCollector(stringBuilder);        showMemoryManager(stringBuilder);        showMemoryPool(stringBuilder);        String logFilePath = "/usr/local/nexus/logs/nexus--"+new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss").format(new Date())+".log";        File nexusShutDownLog = new File(logFilePath);        try {            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(nexusShutDownLog));            bufferedOutputStream.write(stringBuilder.toString().getBytes());            bufferedOutputStream.flush();            bufferedOutputStream.close();        } catch ( IOException e) {            e.printStackTrace();        }    }    /**     * Java 虚拟机的运行时系统     */    private static StringBuilder showJvmInfo(StringBuilder stringBuilder) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");        RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();        String vendor = mxbean.getVmVendor();        stringBuilder                .append("jvm name:" + mxbean.getVmName())                .append("jvm version:" + mxbean.getVmVersion())//                .append("jvm bootClassPath:" + mxbean.getBootClassPath())                .append("jvm start time:" + df.format(new Date(mxbean.getStartTime()))).append("\r\n");        return stringBuilder;    }    /**     * Java 虚拟机的内存系统     */    private static StringBuilder showMemoryInfo(StringBuilder stringBuilder) {        MemoryMXBean mem = ManagementFactory.getMemoryMXBean();        Method[] mtMethods = MemoryMXBean.class.getDeclaredMethods();        for (Method method : mtMethods) {            if (method.getName().contains("get")) {                try {                    stringBuilder.append(method.getName() + " : " + JSON.toString(method.invoke(mem)) ).append(" \r\n ");                } catch (IllegalAccessException | InvocationTargetException e) {                    e.printStackTrace();                }            }        }        stringBuilder.append("\r\n");        return stringBuilder;    }    /**     * Java 虚拟机在其上运行的操作系统     */    private static StringBuilder showSystem(StringBuilder stringBuilder) {        OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();        Method[] mtMethods = OperatingSystemMXBean.class.getDeclaredMethods();        for (Method method : mtMethods) {            if (method.getName().contains("get")) {                try {                    stringBuilder.append(method.getName() + " : " + JSON.toString(method.invoke(op)) ).append(" , ");                } catch (IllegalAccessException | InvocationTargetException e) {                    e.printStackTrace();                }            }        }        stringBuilder.append("\r\n");        return stringBuilder;    }    /**     * Java 虚拟机的类加载系统     */    private static StringBuilder showClassLoading(StringBuilder stringBuilder){        ClassLoadingMXBean cl = ManagementFactory.getClassLoadingMXBean();        Method[] mtMethods = ClassLoadingMXBean.class.getDeclaredMethods();        for (Method method : mtMethods) {            if (method.getName().contains("get")) {                try {                    stringBuilder.append( method.getName() + " : " + method.invoke(cl).toString() ).append(" , ");                } catch (IllegalAccessException | InvocationTargetException e) {                    e.printStackTrace();                }            }        }        stringBuilder.append("\r\n");        return stringBuilder;    }    /**     * Java 虚拟机的编译系统     */    private static StringBuilder showCompilation(StringBuilder stringBuilder){        CompilationMXBean com = ManagementFactory.getCompilationMXBean();        Method[] mtMethods = CompilationMXBean.class.getDeclaredMethods();        for (Method method : mtMethods) {            if (method.getName().contains("get")) {                try {                    stringBuilder.append(method.getName() + " : " + method.invoke(com).toString()).append(" , ");                } catch (IllegalAccessException | InvocationTargetException e) {                    e.printStackTrace();                }            }        }        stringBuilder.append("\r\n");        return stringBuilder;    }    /**     * Java 虚拟机的线程系统     */    private static StringBuilder showThread(StringBuilder stringBuilder) {        ThreadMXBean thread = ManagementFactory.getThreadMXBean();        Method[] mtMethods = ThreadMXBean.class.getDeclaredMethods();        for (Method method : mtMethods) {            if (method.getName().contains("get") && method.getParameters().length == 0) {                try {                    stringBuilder.append(method.getName() + " : " + JSON.toString(method.invoke(thread)) ).append(" , ");                } catch (IllegalAccessException | InvocationTargetException e) {                    e.printStackTrace();                }            }        }        stringBuilder.append("\r\n");        long[] tids = thread.getAllThreadIds();        for (long tid : tids){            ThreadInfo tinfo = thread.getThreadInfo(tid  , 20);            Method[] ms = ThreadInfo.class.getDeclaredMethods();            for (Method method : ms) {                if (method.getName().contains("get") && method.getParameters().length == 0) {                    try {                        Object rs = method.invoke(tinfo);                        if(rs == null){                            rs = "null";                        }                        stringBuilder.append(method.getName() + " : " + JSON.toString(rs)  ).append(" , ");                    } catch (IllegalAccessException | InvocationTargetException e) {                        e.printStackTrace();                    }                }            }            stringBuilder.append("\r\n");            StackTraceElement[] traceElements = tinfo.getStackTrace();            for (StackTraceElement trace: traceElements ) {                stringBuilder.append(JSON.toString(trace)).append("\r\n");//                stringBuilder.append(trace.toString()).append("\r\n");            }            stringBuilder.append("\r\n");        }        return stringBuilder;    }    /**     * Java 虚拟机中的垃圾回收器。     */    private static StringBuilder showGarbageCollector(StringBuilder stringBuilder) {        List<GarbageCollectorMXBean> gc = ManagementFactory.getGarbageCollectorMXBeans();        for (GarbageCollectorMXBean gcMXBean : gc) {            Method[] ms = GarbageCollectorMXBean.class.getDeclaredMethods();            for (Method method : ms) {                if (method.getName().contains("get") && method.getParameters().length == 0) {                    try {                        Object rs = method.invoke(gcMXBean);                        if(rs == null){                            rs = "null";                        }                        stringBuilder.append(method.getName() + " : " + JSON.toString(rs)  ).append(" , ");                    } catch (IllegalAccessException | InvocationTargetException e) {                        e.printStackTrace();                    }                }            }            stringBuilder.append("\r\n");        }        return stringBuilder;    }    /**     * Java 虚拟机中的内存管理器     */    private static StringBuilder showMemoryManager(StringBuilder stringBuilder) {        List<MemoryManagerMXBean> mm = ManagementFactory.getMemoryManagerMXBeans();        for (MemoryManagerMXBean eachmm : mm) {            Method[] ms = MemoryManagerMXBean.class.getDeclaredMethods();            for (Method method : ms) {                if (method.getName().contains("get") && method.getParameters().length == 0) {                    try {                        Object rs = method.invoke(eachmm);                        if(rs == null){                            rs = "null";                        }                        stringBuilder.append(method.getName() + " : " + JSON.toString(rs)  ).append(" , ");                    } catch (IllegalAccessException | InvocationTargetException e) {                        e.printStackTrace();                    }                }            }            stringBuilder.append("\r\n");        }        return stringBuilder;    }    /**     * Java 虚拟机中的内存池     */    private static StringBuilder showMemoryPool(StringBuilder stringBuilder) {        List<MemoryPoolMXBean> mps = ManagementFactory.getMemoryPoolMXBeans();        for (MemoryPoolMXBean mp : mps) {            Method[] ms = MemoryPoolMXBean.class.getDeclaredMethods();            for (Method method : ms) {                if (method.getName().contains("get") && method.getParameters().length == 0) {                    try {                        Object rs = method.invoke(mp);                        if(rs == null){                            rs = "null";                        }                        stringBuilder.append(method.getName() + " : " + JSON.toString(rs)  ).append(" , ");                    } catch (IllegalAccessException | InvocationTargetException e) {                        e.printStackTrace();                    }                }            }            stringBuilder.append("\r\n");        }        return stringBuilder;    }}


原创粉丝点击