`
glamey
  • 浏览: 92108 次
  • 性别: Icon_minigender_1
  • 来自: bj
社区版块
存档分类
最新评论

Java 虚拟机线程监控

    博客分类:
  • java
阅读更多
/**
 * 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;
    }
}

0
2
分享到:
评论

相关推荐

    java虚拟机性能监控

    ### Java虚拟机性能监控 #### 一、引言 在当今快速发展的信息技术领域,Java作为最流行的编程语言之一,其虚拟机(Java Virtual Machine, JVM)的性能优化和监控成为了确保应用程序高效稳定运行的关键因素。Java...

    java虚拟机监控

    4. **线程监控**:线程是并发执行的基本单位。jvisualvm可以列出所有线程,包括它们的状态(如运行、阻塞、等待等),帮助找出死锁、线程过多或者线程阻塞的问题。 5. **类加载器监控**:类加载器负责加载类到JVM中...

    实战Java虚拟机——JVM故障诊断与性能优化 pdf

    第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。

    java虚拟机

    Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责执行Java程序,为Java代码提供了跨平台的运行环境。Java虚拟机的概念始于Sun Microsystems,现在由Oracle公司继续发展和维护。JVM的设计...

    实战JAVA虚拟机

    第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...

    java虚拟机常用命令

    在Java虚拟机运行过程中,我们可能需要使用各种命令工具来监控和诊断可能出现的问题。以下是一些常用的JVM命令工具及其知识点。 1. jps命令 jps(JVM Process Status Tool)命令用于列出正在运行的Java虚拟机进程...

    实战java虚拟机

    第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...

    深入java虚拟机 高清pdf 高清高清高清

    《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...

    Java虚拟机规范 深入java虚拟机

    《Java虚拟机规范》是Java开发人员理解和优化Java应用程序的关键资源。它详细阐述了Java虚拟机(JVM)的工作原理,包括内存管理、类加载机制、字节码执行以及垃圾回收等核心概念。深入理解这些知识点对于提升程序...

    揭秘Java虚拟机-JVM设计原理与实现

    《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...

    Java虚拟机监控方案.docx

    6. **线程监控**: - **线程数量**:实时显示活动线程和守护线程数,以及线程状态的变化。 - **线程状态表示**:用四种颜色区分线程的不同状态。 7. **虚拟机执行堆栈**: - **jstack命令**:定期获取并保存Java...

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    《深入JAVA虚拟机第二版》是由Bill Venners撰写,并由曹晓钢和蒋靖翻译的中文书籍。这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述...

    Java虚拟机规范PDF

    由于无法查看实际的图片和OCR扫描文字内容,我将基于标题和描述提供关于Java虚拟机(JVM)规范的详细知识点。 ### Java虚拟机规范知识点 #### 1. JVM概述 Java虚拟机是运行所有Java程序的抽象计算机,它遵循一定的...

    Java虚拟机使用及优化.pdf

    * Java虚拟机的监控和调试 结论 Java虚拟机是Java语言的核心组件之一,它负责将Java源代码编译成字节码,并在不同的平台上解释执行字节码。Java虚拟机的使用和优化是系统成熟的必经之路,本文介绍了Java虚拟机的...

    深入Java虚拟机(原书第二版清晰版).

    书中还可能会涉及Java虚拟机相关的工具和API,比如JConsole、VisualVM等监控工具,以及JMX、JVMTI等接口。 上述内容是基于书名和描述对书籍可能包含的知识点的推测。由于书籍内容较多,本回答仅能提供一个大致框架...

    java虚拟机学习

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。学习Java虚拟机对于深入理解Java程序的执行机制至关重要。这里我们将深入探讨Java虚拟机的几个关键知识点。 1. 类加载机制:Java程序...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。

    tero智能手机上的java虚拟机

    为了调试和监控JVM,开发者可以利用各种工具,如JConsole、VisualVM或JMX(Java Management Extensions),来检查内存使用、线程状态、性能指标等。 在Tero智能手机上安装和配置Java虚拟机时,需要注意以下几点: ...

    java 虚拟机 教程 pdf

    Java虚拟机(JVM)是Java程序运行的核心组件,它为Java代码提供了跨平台的运行环境。本教程将深入解析JVM的工作原理、内存管理、类加载机制以及性能优化等方面的知识,帮助Java程序员提升对这一关键技术的理解。 ...

Global site tag (gtag.js) - Google Analytics