为什么在物理机膳绫腔有应用Down机
笔者登录了本来物理机,应用还在跑,发明其同样有堆外内存泄漏的现象,其物理内存应用已经达到了5个多G!幸好物理机内存很大年夜,并且此应用宣布还比较频繁,所以没有被OOM。
Dump了物理机上应用的线程,
一共有28737个线程,个中28626个线程等待在CachedBnsClient上。
同样用smaps查看过程实际内存信息,其平均大年夜小依旧为
128K,因为是同一应用的原因
持续进行物理内存计算
1.8+(28737 * 128k)/1024K =(3.6+1.8)=5.4G
进一步验证了我们的推理。
这么多线程应用为什么没有卡顿
JVM一开端申请了
因为根本所有的线程都睡眠在
Thread.sleep(60 * 1000);//一次睡眠60s
上。所以仅仅占用了内存,实际占用的CPU时光很少。
总结
查找Bug的时刻,现场信息越多越好,同时定位Bug必须要有本质性的证据。例如内存泄漏就要用你推想出的模型进行定量分析。在定量和实际对不上的时刻,深挖下去,你会发明不一样的风景!
原文链接
https://my.oschina.net/alchemystar/blog/1603817
【编辑推荐】
- 世界之谜:为什么法度榜样员老是发明不了本身的Bug?
- Go运行时,对bug的分析调试过程解析
- 微旌旗灯号可以随便率性修改了?官方:纯属Bug
- 法度榜样员大年夜复杂代码中找BUG的5种办法,你用过几个?
- PS4内核级马脚颁布:完美软破要来了
推荐阅读
年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势! 问题描>>>详细阅读
本文标题:解Bug之路:记一次JVM堆外内存泄露Bug的查找
地址:http://www.17bianji.com/lsqh/40306.html
1/2 1