`
glamey
  • 浏览: 90298 次
  • 性别: 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虚拟机的visualvm应用,更加直观的分析java 应用的CPU、内存、堆/栈、线程等情况

    实战JAVA虚拟机

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

    实战java虚拟机

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

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

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

    Java虚拟机监控方案.docx

     通过虚拟机内置jstack获取虚拟机线程的执行堆栈  统计、分析之后的数据封装为用于被监控数据对象,向各种渠道的数据观察者发送监控数据的变更通知  定时保存jstat,jstack结果,以及其他有后续分析价值监控数据...

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

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

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

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

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

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

    Jvmm是一个同时支持操作系统监控和Java虚拟机监控的工具,提供有丰富的监控功能

    Jvmm是一个同时支持操作系统监控和Java虚拟机监控的工具,提供有丰富的监控功能:OS监控(内存状态、CPU负载、磁盘IO吞吐率、磁盘健康状态、网卡IO等)、JVM监控(内存、线程、GC、类加载器等),还提供生成火焰图、...

    后端JAVA虚拟机JVM调优必备工具

    二、此工具线程的几种状态 1.死锁,Deadlock(重点关注)  2.执行中,Runnable(重点关注)  3.等待资源,Waiting on condition(重点关注)  4.等待监控器检查资源,Waiting on monitor  5.暂停,Suspended  ...

    java虚拟机知识点整理

    自己看书整理的 java虚拟机精品知识点 java内存区域与内存溢出处理 虚拟机栈和本地方法栈区别 对象定位访问 垃圾收集器GC管理 虚拟机GC垃圾回收收集算法(内存回收方法论) 虚拟机GC垃圾回收收集器(内存回收具体实现...

    java-虚拟机 操作系统监控工具-源码

    支持Java虚拟机监控:GC信息、内存使用情况、内存池信息、类加载器、线程堆栈 支持生成火焰图(采样事件包括CPU、内存分配、线程栈、Java方法调用栈等) 支持Java代码反编译生成 支持Java代码热更新(可指定...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第57节可视化虚拟机工具-Jconsole线程监控00:12:18分钟 | 第58节死锁原理以及可视化虚拟机工具-Jconsole线程死锁监控00:10:38分钟 | 第59节VisualVM使用详解00:08:03分钟 | 第60节性能调优概述00:11:22分钟 | 第...

    Java虚拟机

    这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...

    VisualVM使用方法

    java自带资源监控利器,适用于对java虚拟机内存监控,线程监控,cpu使用等监控

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    第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 运行...

    Java高级工程师简历模板18k+

    3.对Java虚拟机、JMM、垃圾收集机制、GC算法、JVM常用配置参数、GC参数、classLoader、锁机制、JVM故障分析,jmap,jstack等jdk提供的工具命令,性能监控工具(java visualVM),JVM参数调优有一定了解; 4.熟悉java...

    java后台管理系统.zip

    这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多...

    Java程序性能优化

    第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能;第6章为工具篇,介绍获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。 《Java程序性能优化:让你的Java程序更快、更...

Global site tag (gtag.js) - Google Analytics