我正在 CentOS Linux 上运行 pidstat 来监视 Java 应用程序。当我将 java pid 提供给 pidstat 时,它永远不会显示任何上下文切换。
top
2407 root 20 0 7939m 4.2g 11m S 129.3 58.4 138:47.08 java
pidstat -w -I -p 2407 3
09:53:41 AM PID cswch/s nvcswch/s Command
09:53:44 AM 2407 0.00 0.00 java
我必须找到特定 Java 线程的 pid(使用 top -H)才能看到上下文切换。
top -H
2915 root 20 0 7939m 4.2g 11m R 22.8 58.3 17:36.93 java
pidstat -w -I -p 2915 3
09:53:41 AM PID cswch/s nvcswch/s Command
10:10:11 AM 2915 643.67 230.33 java
如何查看 Java 进程中所有线程的上下文切换总和?
最佳答案
如果您希望在 Java 中执行此操作,那么 API 不提供此类方法。您将不得不采用依赖于平台的方式来执行此操作。
您也许可以使用 JNI/JNA 为不同的操作系统本地执行此操作:
- Windows - Performance Counters
- Linux - getrusage
如果您打算使用 pidstat 执行此操作,那么您确实应该在 SuperUser.com 中问这个问题。但是,据我所知,您可以将 -t
添加到 pidstat
命令中,使其看起来像这样:
pidstat -w -I -t -p <pid> 3
它将列出进程的所有线程的统计信息。
关于java - 如何查看Java进程中所有线程的所有上下文切换的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850505/