原文地址:https://www.lujun9972.win/blog/2019/05/16/优化emacs的垃圾搜集行为/index.html
从 http://akrl.sdf.org/ 中看到的,记录一下
Emacs触发垃圾收集的阀值由 gc-cons-threshold
决定,当Emacs自上一次垃圾收集后分配的内存超过该阀值时就会触发新一轮的垃圾收集行为。 然而该阀值默认居然不到800K,导致Emacs频繁地进行垃圾收集。
由于垃圾收集速度很快,我们平时可能对Emacs的垃圾收集操作不会有感知,将 garbage-collection-messages
设置为 t
可以在 echoline
中显示GC过程. 另外,通过查看 gc-elapsed
变量的值我们可以看到Emacs花费在GC过程所花的时间。
gc-elapsed
35.051446504999994
为了提高Emacs性能,一个很自然的想法就是提高 gc-cons-threshold
的阀值,让Emacs不要那么频繁地进行垃圾收集。 然而,这里就存在两个问题:
- 什么时候触发垃圾收集比较合适?是否一定要等到超过了阀值才收集?
- 这个阀值设置为多大比较合适