GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Finalizer-Type.html ・ emacs-doc.conao3.com

2.4.21 Finalizer Type

ファイナライザオブジェクトは、不要になったオブジェクトの後処理をLispコードで行うのに役立ちます。ファイナライザはLispの関数オブジェクトを保持します。ガベージコレクションのパスを経てファイナライザオブジェクトが到達不能になると、Emacsはそのファイナライザに関連付けられた関数オブジェクトを呼び出します。ファイナライザが到達可能かどうかを判定する際、Emacsはファイナライザオブジェクト自身からの参照をカウントしません。これにより、ファイナライズされたオブジェクト自体への参照を誤ってキャプチャしてしまう心配なく、ファイナライザを利用できます。

ファイナライザのエラーは *Messages* に出力されます。Emacs は、指定されたファイナライザオブジェクトに関連付けられた関数を、たとえその関数が失敗したとしても、ちょうど1回だけ実行します。

関数: make-finalizer function

function を実行するファイナライザを作成してください。返されたファイナライザオブジェクトがガベージコレクション後に到達不能になると、function が呼び出されます。ファイナライザオブジェクトが他のファイナライザオブジェクトからの参照を通じてのみ到達可能な場合、function を実行するかどうかの判定においては、到達可能とはみなされません。function はファイナライザオブジェクトごとに1回実行されます。