jit-lock-function 消耗太多 CPU 並經常掛起我的 emacs。有人遇到同樣的問題嗎?怎麼解決這個問題呢?
作業系統是archlinux x64,CPU intel i7 4790,16GB RAM。除系統服務外,僅 emacs 正在運作。
謝謝!
分析器報告給了以下內容:
- redisplay_internal (C function) 2728 90%
- jit-lock-function 2724 89%
- jit-lock-fontify-now 2724 89%
- jit-lock--run-functions 2724 89%
- run-hook-wrapped 2724 89%
- #<compiled 0x40f2001> 2724 89%
- font-lock-fontify-region 2724 89%
- c-font-lock-fontify-region 2724 89%
- font-lock-default-fontify-region 2716 89%
- font-lock-fontify-keywords-region 2712 89%
- c-font-lock-declarations 1932 63%
- c-find-decl-spots 1912 63%
- #<compiled 0x22af545> 1148 37%
- c-get-fontification-context 732 24%
- c-looking-at-or-maybe-in-bracelist 504 16%
+ c-backward-token-2 472 15%
- c-back-over-member-initializers 108 3%
+ c-back-over-compound-identifier 56 1%
+ c-parse-state 32 1%
c-backward-sws 8 0%
+ c-back-over-compound-identifier 68 2%
+ c-backward-token-2 16 0%
c-backward-sws 4 0%
+ c-forward-decl-or-cast-1 240 7%
+ c-forward-label 60 1%
+ c-backward-token-2 16 0%
+ c-backward-sws 12 0%
+ c-font-lock-single-decl 8 0%
c-syntactic-re-search-forward 4 0%
+ c-bs-at-toplevel-p 672 22%
+ c-beginning-of-macro 28 0%
c-forward-sws 8 0%
c-backward-token-2 4 0%
c-font-lock-<>-arglists 304 10%
+ #<compiled 0x22b6359> 92 3%
#<compiled 0x22b6381> 68 2%
#<compiled 0x22b5fbd> 32 1%
#<compiled 0x22b62b9> 32 1%
#<compiled 0x22b625d> 28 0%
#<compiled 0x22b62fd> 28 0%
#<compiled 0x22b631d> 28 0%
#<compiled 0x22b63d5> 8 0%
+ c-font-lock-enclosing-decls 4 0%
c-font-lock-enum-body 4 0%
#<compiled 0x22b6669> 4 0%
font-lock-fontify-syntactically-region 4 0%
+ c-before-context-fl-expand-region 8 0%
答案1
你的指責有點不對勁:89%的時間都花在了,jit-lock-function
但所有這些時間也都花在了c-font-lock-fontify-region
(從 間接調用jit-lock-function
)。
所以你的問題是 c-font-lock 而不是 jit-lock。
請透過 將此報告為錯誤M-x report-emacs-bug
。您可能想要提供有關它出現的緩衝區內容的詳細資訊(我假設它是一個 C++ 檔案)。
如果這是使用早於 26.3 的 Emacs,那麼在報告錯誤之前可能值得嘗試使用 Emacs-26.3,因為多年來 c++ 模式中的字體鎖定效能已經得到定期改進。