天猫|引人入胜,实战讲解“Java 性能调优六大工具”之 linux 命令行工具( 四 )


从输出结果中可以看到 , 进程中的 22813(0x591D)线程产生了大量的 I/O 操作 。 通过前文中提到的 jstatck 命令可以导出当前线程的堆栈 , 查找 nid 为 22813(0x591D)的线程 , 即可定位到 HoldIOTask 线程 。
注意:使用 pidstat 命令可以查看进程和线程的 I/O 信息 。
3.内存监控
使用 pidstat 命令还可以监控指定进程的内存使用情况 。 下面的代码使用 pidstat 工具对进程 ID 为 27233 的进程进行内存监控 , 每秒刷新 1 次 , 共进行 5 次统计 。

输出结果中各列含义如下:
·minflt/s:该进程每秒错误(不需要从磁盘中调出内存页)的总数 。
·majflt/s:该进程每秒错误(需要从磁盘中调出内存页)的总数 。
·VSZ:该进程使用的虚拟内存大小 , 单位为 KB 。
·RSS:该进程占用的物理内存大小 , 单位为 KB 。
·%MEM:占用内存比率 。
注意:pidstat 工具是一款多合一的优秀工具 , 它不仅可以监控 CPU、I/O 和内存资源 , 甚至可以将问题定位到相关线程 , 以方便进行应用程序故障排查 。