今天搬磚的時候遇到一個問題,idea總是卡死,完全無法愉快的玩耍。幸好機器是Linux系統的。於是通過以下方式解決了問題:
- 通過
top
命令,查看系統運行狀態發現4個CPU中有1個CPU用戶占用率為100%。經查得知正是idea的進程pid1。 - 通過在
H
找到了idea的線程tid1。 - 通過
jstack
打印出ideapid1的堆棧. - 把tid1轉換為十六進制去jstack打出的堆棧中查找。
- 最后經查發現
...
at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$ASTTreeGuide.getParent(RecursiveTreeElementWalkingVisitor.java:52)
...
通過這個堆棧可知這是語法提示相關的,在做這個事情的時候性能不好。這樣問題就搞明白了:因為在idea上寫lua代碼,同時代碼又不是規范的lua結構,類似於html + lua混合體這類格式的。為了着色我把這類文件也用lua插件渲染了。所以解決方法恨簡單,不渲染這類文件即可。