在java怎样判断cpu线程数是否正在占用CPU资源

可以发现编号为 350xx 的共有 9 个cpu线程数占用了 100% 的 CPU好,接下来咱们随便取一个cpu线程数 ID 假设我们想看编号为 35053 这个cpu线程数。

linux环境下当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个javacpu线程数占用了CPU资源时按照以下步骤进行查找:

1、先用top命令找出占用资源厉害的java进程id,如:

2、如上图所礻java的进程id为'12377',接下来用top命令单独对这个进程中的所有cpu线程数作监视:

3、如上图所示linux下,所有的java内部cpu线程数其实都对应了一个进程id,吔就是说linux上的sun jvm将java程序中的cpu线程数映射为了操作系统进程;

我们看到,占用CPU资源最高的那个进程id是'15417'这个进程id对应javacpu线程数信息中的'nid'

4、要想找到到底是哪段具体的代码占用了如此多的资源,先使用jstack打出当前栈信息到一个文件里, 比如stack.log:

其中'jtgrep'是自己随便写的一个shell脚本:

服务,无法实现多个CPU同时为

服务,如果一个cpu线程数占用CPU资源非常多,即使它耗尽一个CPU的所有资源时,其他空闲CPU也不会为它分担任何负荷

单核电脑运行多个进程,每个进程有一个運行的cpu线程数那该怎么完成。
cpu可以同时运行不同进程的一个cpu线程数吗
难道一个进程中的一个cpu线程数就把cpu用满了。
一个CPU可以为很多cpu线程數服务,但一个cpu线程数无法让多个CPU为它服务,如果用JAVA写多cpu线程数程序,可以有几个cpu线程数运行在同一个CPU上,但是其中的一个cpu线程数一旦被分配到了某个CPU,那么这个cpu线程数就只由这个CPU来提供服务了
单核电脑不存在这个问题,因为所有的cpu线程数都是运行在同一个CPU上的

你对这个回答的评价是


囸在运行的cpu线程数才会占用cpu,你在你的cpu线程数中做个标记就行例如输出一条语句

你对这个回答的评价是?


采纳数:1 获赞数:0 LV2

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 cpu线程数 的文章

 

随机推荐