JVM_连续读取消耗CPU

时间:2018-12-11 16:34:39

标签: java linux

我是Java编程的新手,发现一个进程持续消耗约100%的CPU。

enter image description here

这是同一线程的pstack。

Thread 99 (Thread 0x7f3ea8121700 (LWP 7133)):
#0  0x000000350920e82d in read () from /lib64/libpthread.so.0
#1  0x00007f3eb5245431 in JVM_Read () from /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.191.x86_64/jre/lib/amd64/server/libjvm.so
#2  0x00007f3eb46c1b57 in ?? () from /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.191.x86_64/jre/lib/amd64/libjava.so
#3  0x00007f3ead08f4c6 in ?? ()
#4  0x00000006c5ebc440 in ?? ()
#5  0x0000000000000000 in ?? ()

可以采取哪些措施来停止消耗CPU?

谢谢。

1 个答案:

答案 0 :(得分:0)

JVM_Read意味着将数据从文件描述符读取到char数组中。这表明JVM上正在运行的任何东西都在忙于实际工作。

获取并检查线程转储(kill -3 <PID>)或读取程序源代码会更加实用。可能还涉及其他因素,例如后台GC线程。