zoukankan      html  css  js  c++  java
  • JVM调优-Jstack线程分析

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:
    jstack [-l][F] pid
    如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。进程处于hung死状态可以用-F强制打出stack。
    dump 文件里,值得关注的线程状态有:
    死锁,Deadlock(重点关注)
    执行中,Runnable
    等待资源,Waiting on condition(重点关注)
    等待获取监视器,Waiting on monitor entry(重点关注)
    暂停,Suspended
    对象等待中,Object.wait() 或 TIMED_WAITING
    阻塞,Blocked(重点关注)
    停止,Parked

    实例一:Waiting to lock 和 Blocked

    复制代码
    "RMI TCP Connection(267865)-172.16.5.25" daemon prio=10 tid=0x00007fd508371000 nid=0x55ae waiting for monitor entry [0x00007fd4f8684000]
    java.lang.Thread.State: BLOCKED (on object monitor)
    at org.apache.log4j.Category.callAppenders(Category.java:201)

    • waiting to lock <0x00000000acf4d0c0> (a org.apache.log4j.Logger)
      at org.apache.log4j.Category.forcedLog(Category.java:388)
      at org.apache.log4j.Category.log(Category.java:853)
      at org.apache.commons.logging.impl.Log4JLogger.warn(Log4JLogger.java:234)
      at com.tuan.core.common.lang.cache.remote.SpyMemcachedClient.get(SpyMemcachedClient.java:110)

    图形化工具JvisualVM的使用
    JDK1.6版本及以上自带JvisualVM工具,此工具功能比较全面,内存分析,线程分析,JAVA实例、方法调用分析,这里先说下线程分析的使用
    如图:

    线程dump功能如图:

    线程dump详细信息:

  • 相关阅读:
    兼容ie8 rgba()用法 滤镜filter的用法
    解決BufferedReader读取UTF-8文件中文乱码
    基于JavaScript实现表单密码的隐藏和显示出来
    Java多线程学习(转载)
    使用java 程序创建格式为utf-8文件的方法(写入和读取json文件)
    java获取classpath文件路径空格转变成了转义字符%20的问题
    java中Class.getResource用法
    事务传播行为和特性
    事务隔离级别
    使用Condition循环依次打印123
  • 原文地址:https://www.cnblogs.com/stone-xiao/p/6007745.html
Copyright © 2011-2022 走看看