怎样分析 JAVA 的 Thread Dumps

 我来答
爱忻桃vt
2016-07-15 · TA获得超过193个赞
知道小有建树答主
回答量:263
采纳率:100%
帮助的人:330万
展开全部
 当有障碍,或者是一个基于 JAVA 的 WEB 应用运行的比预期慢的时候,我们需要使用 thread dumps。如果对于你来说,thread dumps 是非常复杂的,这篇文章或许能对你有所帮助。在这里我将解释在 JAVA 中什么是 threads,他们的类型,怎么被创建的,怎样管理它们,你怎样从正在运行的应用中 dump threads,最后你可以怎样分析它以及确定瓶颈或者是阻塞线程。本文来自于 JAVA应用程序长期调试经验的结果。

  Java and Thread
  一个 web 服务器使用几十到几百个线程来处理大量并发用户,如果一个或多个线程使用相同的资源,线程之间的竞争就不可避免了,并且有时候可能会发生死锁。

  Thread contention 是一个线程等待锁的一个状态,这个锁被另外一个线程持有,等待被释放,不同的线程频繁访问 WEB 应用的共享资源。例如,记录一条日志,线程尝试记录日志之前必须先获取锁来访问共享资源。

  死锁是线程竞争的一个特殊状态,一个或是多个线程在等待其他线程完成它们的任务为了完成它们自己的任务。

  线程竞争会引起各种不同的问题,为了分析这些这些问题,你需要使用 dump threads,dump threads 能给你提供每个线程的精确状态信息。

  JAVA 线程的背景资料
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式