问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jvm 内存调优用过哪些工具,jstate 做什么用的?如何 dump 出当前线程状态

发布网友 发布时间:2022-06-16 01:26

我来回答

1个回答

热心网友 时间:2023-10-30 23:44

实例一: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)

说明:
1)线程状态是 Blocked,阻塞状态。说明线程等待资源超时!
2)“ waiting to lock <0x00000000acf4d0c0>”指,线程在等待给这个 0x00000000acf4d0c0 地址上锁(英文可描述为:trying to obtain 0x00000000acf4d0c0 lock)。
3)在 mp 日志里查找字符串 0x00000000acf4d0c0,发现有大量线程都在等待给这个地址上锁。如果能在日志里找到谁获得了这个锁(如locked < 0x00000000acf4d0c0 >),就可以顺藤摸瓜了。
4)“waiting for monitor entry”说明此线程通过 synchronized(obj) {……} 申请进入了临界区,从而进入了下图1中的“Entry Set”队列,但该 obj 对应的 monitor 被其他线程拥有,所以本线程在 Entry Set 队列中等待。
5)第一行里,"RMI TCP Connection(267865)-172.16.5.25"是 Thread Name 。tid指Java Thread id。nid指native线程的id。prio是线程优先级。[0x00007fd4f8684000]是线程栈起始地址。

实例二:Waiting on condition 和 TIMED_WAITING

"RMI TCP Connection(idle)" daemon prio=10 tid=0x00007fd50834e800 nid=0x56b2 waiting on condition [0x00007fd4f1a59000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000acd84de8> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)
at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:945)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:662)
说明:
1)“TIMED_WAITING (parking)”中的 timed_waiting 指等待状态,但这里指定了时间,到达指定的时间后自动退出等待状态;parking指线程处于挂起中。

2)“waiting on condition”需要与堆栈中的“parking to wait for <0x00000000acd84de8> (a java.util.concurrent.SynchronousQueue$TransferStack)”结合来看。首先,本线程肯定是在等待某个条件的发生,来把自己唤醒。其次,SynchronousQueue 并不是一个队列,只是线程之间移交信息的机制,当我们把一个元素放入到 SynchronousQueue 中时必须有另一个线程正在等待接受移交的任务,因此这就是本线程在等待的条件。
3)别的就看不出来了。
jvm 内存调优用过哪些工具,jstate 做什么用的?如何 dump 出当前线程状 ...

1)线程状态是 Blocked,阻塞状态。说明线程等待资源超时!2)“ waiting to lock &lt;0x00000000acf4d0c0&gt;”指,线程在等待给这个 0x00000000acf4d0c0 地址上锁(英文可描述为:trying to obtain 0x00000000acf4d0c0 lock)。3)在 dump 日志里查找字符串 0x00000000acf4d0c0,发现有大量线程都在...

如何查看java虚拟机堆内存的参数值

jmap( Memory Map for Java):JVM内存映像工具打印出某个java进程(使用pid)内存内的所有‘对象’的情况(如:产生那些对象,及其数量)命令格式:jmap [ option ] pid常用参数说明:-dump:[live,]format=b,file=&lt;filename&gt; 使用二进制形式输出jvm的heap内容到文件中, live子选项是可选的,假如指定live选项,那么只输出...

Java程序卡住,在jstack输出调用栈之后恢复,可能是什么原因

jstack用于打印出给定的java进程ID或corefile或远程调试服务的Java堆栈信息。如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack[-l]pid如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的javastack和nativestack的信息,从而可以轻松地知道java程序...

jvisualvm的使用

1)jmx是jvm自身提供的一个标准的jmx管理功能,client支持度非常好,jvm监控工具基本上都会支持这种连接方式。而且只要配置几个简单的选项就可以使用了,不需要单独启动一个第三方的只用来监控连接的应用程序 2)jstatd是jdk提供的一个单独的工具,一个主机只需要运行一个jstatd就可以监控主机上所有的java ap...

电脑里常用的的英语有那些(汉语意思)?

Minkowski Sum Minkowski和 Set and String Problems 集合与串的问题 Set Cover 集合覆盖 Set Packing 集合配置 String Matching 模式匹配 Approximate String Matching 模糊匹配 Text Compression 压缩 Cryptography 密码 Finite State Machine Minimization 有穷自动机简化 Longest Common Substring 最长公共子串 ...

我后天要去三星SDS做JAVA笔试题,请问有哪个高人去过,有笔试和面试题的...

16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的...

jvm性能调优都做了什么 java内存调优 jvm参数的设置和jvm调优 jvm内存调优 为什么要jvm调优 什么是jvm调优 jvm调优工具 jvm调优的意义 jvm常用调优
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
胶原蛋白线双眼皮是不是永久性 双眼皮埋线是蛋白质还是尼龙绳-双眼皮埋线蛋白线多久能吸收 人体输液的“港口”完全植入式输液港 双眼皮宽变窄修复的方法 同心保家庭重疾险靠不靠谱?便宜吗? 做完双眼皮一宽一窄怎么办 喝全脂奶粉对长高有没有什么好处? redmine中“选择一个项目..."下拉列表框中为什么只列出一个项目,我建... 南充市龙门中学实力现在怎样?他的奥赛班是重点班么? 感情中为什么总是不知足呢? 狮子座与水瓶座得爱情… 通过线程dump,我们获得了一个正在执行的java程序的线程信息。 一个老头拿着枪打僵尸是什么游戏 对打游戏一个老头一个酒壶喷火拿着鱼钩,摁键手机游戏, 长痘痘的人适合喝红糖水吗 皮肤上火引起的痘痘喝什么好?蜂蜜水.柠檬水~``求大神帮助 形容形势严峻的词语 严峻配什么词语 三星a9手机高配版什么时候上市 苹果apple ipad新品a9芯片怎么样 鹤山址山东溪开发区A区有哪些厂招工? 鹤山市沙坪镇附近有公司正在招聘吗? 鹤山殡仪馆招聘人员吗?一般有什么要求,工资多少 鹤山共和镇那些厂招工十六周岁那里招工 词语搭配 严峻( ) 严明( ) 严密( ) 梦见老公用自己化妆品穿自己的黑白条纹衣服? 水瓶座的我和狮子座的他是不是真的很难在一起哦? 外贸业务员和酒店前台接待,我应该选哪个? 求职外贸业务员,周末可以双休或者周六只上半天班吗 高级顾问英文怎么翻译? 填上恰当的词语,严峻的( ) 严格的( ) 严肃的( ) 黄历里的某天,适宜嫁娶不适宜安床怎么办? 严峻的什么填上恰当词语写人的 女友最近自闭抑郁,怎么办? 女朋友很自闭怎么办 be bored by 有这个词组吗? take a(n)attitude 造句, 上有政策下有对策造句? 的纪律,严峻的考验四组词语搭配有没 关于严峻的a bb式词语? 奔驰AMG仪表盘G_FORCE偏移 有什么射击游戏好玩。真实。可以联机玩,手机游戏。现代战争之类的就行 形容沉重的词语并造句 水瓶座和狮子座的爱情 我想问一下汽车美容店招牌应该怎么设计? 汽车美容店招牌应该怎么设计? 用安塞腰鼓中读读写写的词语造句,字数不限,不能用原文回答,谢谢 笔记本电脑加了内存条4g的 为什么还是只能用2g - 信息提示 益州疲弊什么意思 我家儿童电动遥控车喇叭不响了 怎么修