我今天遇到了同样的问题,事实证明它是一个占用CPU的索引线程。我最近在一个项目中添加了相当多的文件,但忘记了它。我意识到其他人不太可能有这个问题,但发布我如何调查它可能是有用的。
我正在运行基于eclipse Juno的STS的Ubuntu 12.10。
- 从命令行启动 eclipse 并将输出重定向到文件,以便我们可以获取线程转储
-
让它满足一下,然后获取每个线程的CPU使用率列表:ps -mo 'pid lwp stime time pcpu' -C java。下面是识别我的 CPU 饥渴线程的输出示例:
PID LWP STIME TIME %CPU
6974 - 07:42 00:15:51 133
7067 07:42 00:09:49 86.1
将线程ID(在我的情况下为7067)转换为十六进制0x1b9b(例如,在命令行中使用:printf “0x%x\n” 7067)
使用 kill -3: kill -3 6974 执行 java 进程的线程转储。输出保存在您启动 eclipse 时重定向的 stdout 文件中
-
打开文件并查找线程的十六进制 ID:
“链接索引器延迟写入-10” prio=10 tid=0x00007f66b801a800 nid=0x1b9b 可运行 [0x00007f66a9e46000]
java.lang.Thread.State: RUNNABLE
at com.ibm.etools.references.internal.bplustree.db.ExtentManager$WriteBack.r