与linux下top命令直接显示进程下线程资源占用不同,Windows下默认任务管理器只能显示出进程的资源占用,jconsle等工具也只能显示出java进程资源占用,无法显示出进程能具体线程的资源占用,为此需要用到一个工具processExplorer。
1、用任务管理器或jconsle工具占用资源最高的java进程pid;
2、用processExplorer工具找到这个进程下线程的资源占用情况,找到占用资源最高的线程id,将其转换为16进制显示;
3、jconsle或jstack java进程,然后找到上面线程id对应的线程,可以看到占用资源较高的线程代码,就是导致资源占用较高的原因。然后进一步分析是自己代码写的问题还是JVM参数设置有问题来优化改进。