![emacs para colgar la función jit-lock](https://rvso.com/image/1711472/emacs%20para%20colgar%20la%20funci%C3%B3n%20jit-lock.png)
La función jit-lock consume demasiada CPU y cuelga mi emacs con frecuencia. ¿Alguien ha encontrado el mismo problema? ¿Cómo solucionar esto?
El sistema operativo es archlinux x64, CPU intel i7 4790, 16 GB de RAM. Solo se ejecuta emacs, excepto los servicios del sistema.
¡Gracias!
El informe del perfilador da esto:
- 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%
Respuesta1
Su señal con el dedo está un poco equivocada: el 89% del tiempo se dedica a jit-lock-function
pero todo este tiempo también se dedica a c-font-lock-fontify-region
(llamado indirectamente desde jit-lock-function
).
Entonces su problema es con c-font-lock en lugar de con jit-lock.
Informe esto como un error a través de M-x report-emacs-bug
. Probablemente querrás dar detalles sobre el contenido del búfer en el que aparece (supongo que es un archivo C++).
Si esto es con un Emacs anterior a 26.3, probablemente valga la pena probarlo con Emacs-26.3 antes de informar el error, ya que el rendimiento del bloqueo de fuentes en modo C++ ha experimentado mejoras periódicas a lo largo de los años.