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详细信息:

  • 相关阅读:
    jQuery操作CheckBox的方法(选中,取消,取值)详解
    checkAll操作
    java 去掉重复的数字
    multiselect多选下拉框
    toggle() 隐藏和收缩
    Test 6.29 T4 简单数据结构练习
    Test 6.29 T3 小学生
    Test 6.29 T2 染色
    Test 6.29 T1 预算方案
    [洛谷P3338] ZJOI2014 力
  • 原文地址:https://www.cnblogs.com/stone-xiao/p/6007745.html
Copyright © 2011-2022 走看看