我在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进程中所有线程的所有上下文切换的总和?
答案 0 :(得分:2)
如果您希望在Java中执行此操作,则API不提供此类方法。您将不得不求助于平台相关的方式。
您可以使用JNI / JNA本地为不同的操作系统执行此操作:
如果您的意思是使用pidstat执行此操作,那么您应该在SuperUser.com中提出这个问题。但是,据我所知,您可以在-t
命令中添加pidstat
,以便它看起来像这样:
pidstat -w -I -t -p <pid> 3
它将列出流程所有线程的统计信息。