记录 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; }}
阅读全文
0 0
- 记录 jvm 信息
- JVM 记录
- 信息记录
- 信息记录
- jvm的描述信息
- java获取JVM信息
- JVM信息查看
- JVM阅读记录
- jvm分析 记录下
- Jvm虚拟机学习记录
- JVM默认参数记录
- jvm学习记录:GC
- JVM默认参数记录
- jvm学习记录--03 jvm参数配置
- java获取电脑信息及jvm信息
- 获得 Java 虚拟机 (JVM) 信息
- 查看设置JVM内存信息
- JVM使用方法区信息例子
- 自定义view---强大的密码输入框
- 获取表单内部元素的N种方法
- ORACLE sql 根据in查询里面数据的顺序进行排序 ORDER BY 自定义结果排序查询
- OSI七层协议
- Hadoop 2.6 使用Map Reduce实现矩阵相乘1 矩阵转置
- 记录 jvm 信息
- anaconda使用
- postgresql 的序列
- Ubuntu-10.10如何给用户添加sudo权限
- 知乎 x RxJava Meetup (后记 & 资源)
- Chrome插件开发
- javascript匿名函数的巧妙应用
- Yii
- kali新安装的风扇呼呼转解决方案