知识点:
1)jstack
2)火焰图
3)JVisualVM
4)Jprofiler
首先谈下线程状态:
1)runnable :只有处于runnable的线程才会消耗CPU
2)waiting on condition:表示线程在等待某一个条件的发生,来把自己唤醒
waiting(parking)一直等某个条件发生
Timed_waiting(parking) 定时 ,即使条件不来,也会定时唤醒自己
3)waiting 佛如monitor entry :线程状态是blocked,线程在等待monitor锁(synchronized关键字)
4 in object.wait :当线程获取到monitor锁,如果发现线程继续运行的条件没有满足,则调用wait方法,释放monitor锁,此时等待的线程状态就是in object.wait状态
warning (on object monitor)
timed_waiting(on object monitor)
jstack
首先我们启动一下项目,然后可以采用jps或者任务管理器查看进程pid


遇到卡顿有问题的时候可以连续导出线程快照,分析快照中是否存在某段程序一直在执行,定位问题源头。
火焰图
仅仅适用于linux环境
- 从github上下载async-profiler
git clone github.com/jvm-profili…

cd async-profiler
make



下载火焰图FlameGraph git clone github.com/brendangreg…


3)JVisualVM
这是jdk自带的

4) jprofiler
简介:
JProfiler是用于分析J2EE软件性能瓶颈并能准确定位到Java类或者方法有效解决性能问题的主流工具,它通常需要与性能测试工具如:LoadRunner配合使用,因为往往只有当系统处于压力状态下才能反映出性能问题。
安装jprofiler

安装完毕使用页面向导
1.1 Open session
在 start center 中,打开 Open session标签,在窗口中显示所有预先定义的会话,如上图:
你可以选择一个会话,点击 OK来打开预定义的会话。
会话也可以被修改、复制、删除和排序。
也可以菜单中选择 session --> Open session,打开 Open session窗口。
1.2 New session
会话能够通过两种途径创建:
第一种:人工配置:使用[New session]按钮手工配置一个新的session,配置完成后,开始运行(如何配置详见下面)
第二种:通过集成向导:使用集成向导上的三个按钮:[New server integration] 、[New remote integration] 和 [New applet integration] 。
会话创建完成后可以立即运行。在 Open session标签页中能够看到新建的会话。

使用我们项目部署的那个tomcat版本








finish即可


选择ok即可
