我有一些多线程Java代码。我知道我生成了三个线程。我有六个核心,所以我希望看到我的CPU使用率在0%到50%之间跳跃。但是,在添加一些新的内存密集型操作后,我发现CPU使用率上升到100% - 使用我机器的所有六个内核。
这里发生了什么?这是垃圾收集器吗?
答案 0 :(得分:1)
由于许多长时间运行的线程,你必须首先找出长时间运行的线程。
您可以通过线程转储轻松找到答案。
ps -fL将为您提供一个列表并检查LWP各自的运行时间 jstack它会给你长期运行线程的十六进制值
以上PID是java进程ID。
希望它能帮助您解决问题。
答案 1 :(得分:0)
我进行了分析,看起来CPU中的峰值与GC集合同步。这是有道理的,因为Java 7的默认垃圾收集器runs in parallel by default。