/**
* 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作为最流行的编程语言之一,其虚拟机(Java Virtual Machine, JVM)的性能优化和监控成为了确保应用程序高效稳定运行的关键因素。Java...
4. **线程监控**:线程是并发执行的基本单位。jvisualvm可以列出所有线程,包括它们的状态(如运行、阻塞、等待等),帮助找出死锁、线程过多或者线程阻塞的问题。 5. **类加载器监控**:类加载器负责加载类到JVM中...
第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责执行Java程序,为Java代码提供了跨平台的运行环境。Java虚拟机的概念始于Sun Microsystems,现在由Oracle公司继续发展和维护。JVM的设计...
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
在Java虚拟机运行过程中,我们可能需要使用各种命令工具来监控和诊断可能出现的问题。以下是一些常用的JVM命令工具及其知识点。 1. jps命令 jps(JVM Process Status Tool)命令用于列出正在运行的Java虚拟机进程...
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...
《Java虚拟机规范》是Java开发人员理解和优化Java应用程序的关键资源。它详细阐述了Java虚拟机(JVM)的工作原理,包括内存管理、类加载机制、字节码执行以及垃圾回收等核心概念。深入理解这些知识点对于提升程序...
《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...
6. **线程监控**: - **线程数量**:实时显示活动线程和守护线程数,以及线程状态的变化。 - **线程状态表示**:用四种颜色区分线程的不同状态。 7. **虚拟机执行堆栈**: - **jstack命令**:定期获取并保存Java...
《深入JAVA虚拟机第二版》是由Bill Venners撰写,并由曹晓钢和蒋靖翻译的中文书籍。这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述...
由于无法查看实际的图片和OCR扫描文字内容,我将基于标题和描述提供关于Java虚拟机(JVM)规范的详细知识点。 ### Java虚拟机规范知识点 #### 1. JVM概述 Java虚拟机是运行所有Java程序的抽象计算机,它遵循一定的...
* Java虚拟机的监控和调试 结论 Java虚拟机是Java语言的核心组件之一,它负责将Java源代码编译成字节码,并在不同的平台上解释执行字节码。Java虚拟机的使用和优化是系统成熟的必经之路,本文介绍了Java虚拟机的...
书中还可能会涉及Java虚拟机相关的工具和API,比如JConsole、VisualVM等监控工具,以及JMX、JVMTI等接口。 上述内容是基于书名和描述对书籍可能包含的知识点的推测。由于书籍内容较多,本回答仅能提供一个大致框架...
Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。学习Java虚拟机对于深入理解Java程序的执行机制至关重要。这里我们将深入探讨Java虚拟机的几个关键知识点。 1. 类加载机制:Java程序...
第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
为了调试和监控JVM,开发者可以利用各种工具,如JConsole、VisualVM或JMX(Java Management Extensions),来检查内存使用、线程状态、性能指标等。 在Tero智能手机上安装和配置Java虚拟机时,需要注意以下几点: ...
Java虚拟机(JVM)是Java程序运行的核心组件,它为Java代码提供了跨平台的运行环境。本教程将深入解析JVM的工作原理、内存管理、类加载机制以及性能优化等方面的知识,帮助Java程序员提升对这一关键技术的理解。 ...