问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

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

发布网友 发布时间:2022-04-26 23:02

我来回答

1个回答

热心网友 时间:2022-05-06 09:31

实例一: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)别的就看不出来了。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
王者送皮肤要多少亲密度才能送 王者荣耀 王者荣耀送皮肤需要什么条件? 劳动法裁员补偿工资如何计算 庆余年电视剧第一季结局在小说第几章大概啊?想接着追下去 汽油、柴油价格、航空煤油价格它们每升油提高多少呢? 生产制造ERP管理软件系统 做脑部CT检查的危害 年轻人做脑CT危害 我怀孕快两个月了,前几天陪同家人去做了脑部CT,后悔死了。这样会对我... 做脑ct后悔了怎么办? 梦见去吃饭和别人吵架是怎么回事 《实战Java虚拟机JVM故障诊断与性能优化第2版》pdf下载在线阅读全文,求百度网盘云资源 梦见去吃饭和餐厅老板吵架然后又和朋友吵架 梦见贴在墙上的财神爷, 说明了什么? 什么时候才用的到jvm调优,为什么要调优,有人能指教一下吗 大型的中央空调不制冷原因该怎么查 梦见吃饭跟人家吵架 请指点下草莓蒸布丁的做法? 大型船用空调如何操作 梦见财神爷烂的七零八落 梦见车学校食堂打饭太少并吵了一架 蒸出来的细滑布丁的家常做法大全怎么做好 大型中央空调安装 梦到学校食堂吃饭还跟工作人员吵架是什么意思? 梦见在食堂排队与人吵架 深圳灏鸿科技有限公司怎么样? 蒸布丁时布丁瓶上的盖子是否要盖 有谁教教怎么做布丁啊 大型中央空调如何开机,关机 玻璃的布丁瓶可以在电饭煲蒸水蛋吗 梦见自家财神爷桌子上很乱? 学习java有必要学习jvm吗 梦见吃饭和人吵架 布丁瓶有什么作用 求《实战Java虚拟机JVM故障诊断与性能优化第2版》全文免费下载百度网盘资源,谢谢~ 请问我做室外桥梁3DMax图,后期用PS处理的时候,背景选什么样的素材合适,同时需要注意哪些细节呢。 梦见财神爷和仙家金身都碎了 在PS里如何给后期效果图做光影效果 photoshop效果图后期制作的创作背景 华为畅享7s可以录屏吗 华为畅享7s手机上方,为什么没有屏幕录制,方法都用了,什么都搞不了? 为什么我的畅享7s没有录屏功能 华为畅享7s不能录屏。 苹果手机接时的提示音是什么,如何下载? 电脑返回不了桌面,直接就是这个怎么办 电脑回不了桌面怎么办? 电脑没反应电脑开机后显示更新选项,鼠标点上去却没反应,返回不到桌面,请问应该怎么处理_百度问一问 电脑卡了怎么返回桌面 电脑返回不到桌面咋办 电脑回不到正常桌面状态
  • 焦点

最新推荐

猜你喜欢

热门推荐