/**
* Created with IntelliJ IDEA.
* User: zy
* To change this template use File | Settings | File Templates.
*/
@Controller
public class ConsoleFrontManager extends BaseController {
@RequestMapping(value = "/monitor/console.htm", method = RequestMethod.GET)
public ModelAndView monitorJVM(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
response.setContentType("text/html; charset=UTF-8");
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
threadMXBean.setThreadContentionMonitoringEnabled(true);
long allThreadIds[] = threadMXBean.getAllThreadIds();
ThreadInfo threadInfos[] = threadMXBean.getThreadInfo(allThreadIds, Integer.MAX_VALUE);
for (ThreadInfo threadInfo : threadInfos) {
out.println("Thread Id = " + threadInfo.getThreadId() + "<br/>");
out.println("Thread Name = " + threadInfo.getThreadName() + "<br/>");
out.println("Thread State = " + threadInfo.getThreadState() + "<br/>");
out.println("Thread Lock Name = " + threadInfo.getLockName() + "<br/>");
out.println("Thread Lock Owner = [id=" + threadInfo.getLockOwnerId() + "][name=" + threadInfo.getLockOwnerId() + "]<br/>");
out.println("Thread CPU Time = " + threadMXBean.getThreadCpuTime(threadInfo.getThreadId()) + "nanoseconds<br/>");
/*out.println("Thread User Time = " + threadMXBean.getCurrentThreadUserTime() + "<br/>");*/
out.println("-------------------------------Thread Stack Trace------------------------------- <br/>");
StackTraceElement stackTraceElements[] = threadInfo.getStackTrace();
for (StackTraceElement stackTraceElement : stackTraceElements) {
out.println(stackTraceElement.toString() + "<br/>");
}
out.println("-------------------------------Thread MonitorInfo-------------------------------<br/>");
MonitorInfo monitorInfos[] = threadInfo.getLockedMonitors();
for (MonitorInfo monitorInfo : monitorInfos) {
out.println("monitorInfo id = " + monitorInfo.getLockedStackDepth() + "<br/>");
out.println("monitorInfo LockedStackFrame = " + monitorInfo.getLockedStackFrame().toString() + "<br/>");
}
out.println();
out.println("<br/><br/>");
}
out.flush();
return null;
}
}
分享到:
相关推荐
java 虚拟机监控,构建本地监控远程java虚拟机的visualvm应用,更加直观的分析java 应用的CPU、内存、堆/栈、线程等情况
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
通过虚拟机内置jstack获取虚拟机线程的执行堆栈 统计、分析之后的数据封装为用于被监控数据对象,向各种渠道的数据观察者发送监控数据的变更通知 定时保存jstat,jstack结果,以及其他有后续分析价值监控数据...
第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
Jvmm是一个同时支持操作系统监控和Java虚拟机监控的工具,提供有丰富的监控功能:OS监控(内存状态、CPU负载、磁盘IO吞吐率、磁盘健康状态、网卡IO等)、JVM监控(内存、线程、GC、类加载器等),还提供生成火焰图、...
二、此工具线程的几种状态 1.死锁,Deadlock(重点关注) 2.执行中,Runnable(重点关注) 3.等待资源,Waiting on condition(重点关注) 4.等待监控器检查资源,Waiting on monitor 5.暂停,Suspended ...
自己看书整理的 java虚拟机精品知识点 java内存区域与内存溢出处理 虚拟机栈和本地方法栈区别 对象定位访问 垃圾收集器GC管理 虚拟机GC垃圾回收收集算法(内存回收方法论) 虚拟机GC垃圾回收收集器(内存回收具体实现...
支持Java虚拟机监控:GC信息、内存使用情况、内存池信息、类加载器、线程堆栈 支持生成火焰图(采样事件包括CPU、内存分配、线程栈、Java方法调用栈等) 支持Java代码反编译生成 支持Java代码热更新(可指定...
第57节可视化虚拟机工具-Jconsole线程监控00:12:18分钟 | 第58节死锁原理以及可视化虚拟机工具-Jconsole线程死锁监控00:10:38分钟 | 第59节VisualVM使用详解00:08:03分钟 | 第60节性能调优概述00:11:22分钟 | 第...
这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...
java自带资源监控利器,适用于对java虚拟机内存监控,线程监控,cpu使用等监控
第2章 Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行...
3.对Java虚拟机、JMM、垃圾收集机制、GC算法、JVM常用配置参数、GC参数、classLoader、锁机制、JVM故障分析,jmap,jstack等jdk提供的工具命令,性能监控工具(java visualVM),JVM参数调优有一定了解; 4.熟悉java...
这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多...
第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能;第6章为工具篇,介绍获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。 《Java程序性能优化:让你的Java程序更快、更...