finalizer object终结器对象 用于帮助 Lisp 代码在不再需要某些对象时进行清理工作。一个终结器会持有一个 Lisp 函数对象。当某次垃圾回收完成后,若该终结器对象变为不可达,Emacs 就会调用与该终结器关联的函数。 在判断一个终结器是否可达时,Emacs 不计入来自其他终结器自身的引用,这让你在使用终结器时不必担心意外持有对被终结对象的引用。
终结器中出现的错误会被打印到 *Messages* 缓冲区。对于同一个终结器对象,其关联函数只会被执行一次,即便该函数执行失败。
创建一个会运行 function 的终结器。当返回的终结器对象在垃圾回收后变为不可达时,function 将会被调用。 如果该终结器对象仅通过其他终结器的引用才可达,那么在判断是否运行 function 时,它将被视为不可达。每个终结器对象只会执行一次对应的 funtion。