本文主要是介绍Jstack 分析哪一行代码慢 ?jvm 打印出线程栈分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
面试题:后台只有一台服务器,上线后发现,只有1个接口请求很慢,其他接口的请求和反应时间很正常,该怎么分析?怎么找出是哪行代码导致的慢?
是在线上,当然不能测试或单步调试。
答案:打印出线程栈分析。
什么是线程堆栈?
线程栈:
Java线程堆栈是某个时间对所有线程的一个快照,其中主要记录了如下信息
– 线程的名称
- 线程的ID
- 原生线程ID
- 线程的运行状态
- 锁的状态
- 调用堆栈,也就是每个线程在各个方法调用的栈
上面描述的信息,接下来我们会具体的介绍与分析
举例:
/*** @Author liuyazhou* @Date 2021/2/25 16:30* @Version 1.0* @Desc*//*** 同步线程*/
class SyncThread implements Runnable {private static int count;public SyncThread() {count = 0;}public synchronized static void method() {for (int i = 0; ; i++) {try {System.out.println(Thread.currentThread().getName() + ":" + (count++));Thread.sleep(100);
这篇关于Jstack 分析哪一行代码慢 ?jvm 打印出线程栈分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!