线程堆栈总结

1. jstack命令

成都创新互联公司是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10多年时间我们累计服务了上千家以及全国政企客户,如成都不锈钢雕塑等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称赞。

查看某个Java进程内的线程堆栈信息。

jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。

2. 热点CPU问题:

cpu占用率持续的比较高

定位步骤:

jps -m -l                   列出正在运行的进程----这里是否用top命令更好一些?top才能看出谁占用cpu最高                       

top -H -p pid           找出该进程内最耗费cpu的线程

printf "%x\n" tid      线程id转化为16进制

jstack pid | grep 转化为16进制的tid -A 50

备注1:展示的信息中,重点关注自己编写的代码,截图给开发

备注2:有可能一次jstack不能捕捉到需要的信息,那么需要多次执行,因为抓的是那一瞬间的状态

3. java.lang.stackoverflowerror,fatal:stack size too small

  • 参数:-Xss:每个线程的栈大小,用于保存函数调用、返回地址等,默认1M,如果报错,改为2M

  • 代码:捕获内存快照,去排查代码,有可能是递归调用的层次太多了

    线程堆栈总结


名称栏目:线程堆栈总结
分享地址:http://scyanting.com/article/jcsoid.html