我是 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?
提前致谢。
最佳答案
JVM_Read
意味着将数据从文件描述符读取到 char 数组中。这表明 JVM 上运行的任何东西都在忙着做实际工作。
获取并检查线程转储 (kill -3 <PID>
) 或阅读程序源代码会更实用。可能还涉及其他因素,例如后台 GC 线程。
关于java - JVM_Read持续消耗CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728518/