常用的 JVM 性能调优监控工具,太强大了( 九 )

得到21742的十六进制值为54ee , 下面会用到 。

OK , 下一步终于轮到jstack上场了 , 它用来输出进程21711的堆栈信息 , 然后根据线程ID的十六进制值grep , 如下:

可以看到CPU消耗在PollIntervalRetrySchedulerThread这个类的Object.wait() , 我找了下我的代码 , 定位到下面的代码:

它是轮询任务的空闲等待代码 , 上面的sigLock.wait(timeUntilContinue)就对应了前面的Object.wait() 。

C、 jmap(Memory Map)和jhat(Java Heap Analysis Tool)

jmap用来查看堆内存使用状况 , 一般结合jhat使用 。

jmap语法格式如下:

如果运行在64位JVM上 , 可能需要指定-J-d64命令选项参数 。

推荐阅读