我是Java编程的新手,发现一个进程持续消耗约100%的CPU。
这是同一线程的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?
谢谢。
答案 0 :(得分:0)
JVM_Read
意味着将数据从文件描述符读取到char数组中。这表明JVM上正在运行的任何东西都在忙于实际工作。
获取并检查线程转储(kill -3 <PID>
)或读取程序源代码会更加实用。可能还涉及其他因素,例如后台GC线程。