×
ECMAScript
標準組込オブジェク
ト
標準組込コンストラクター
非公開オブジェクト
インターフェース
【JSリファレンス】new FinalizationRegistry()
更新日:2024/06/14
初出:ECMAScript2021
FinalizationRegistryコンストラクターは、オブジェクトがGC(ガベージコレクション)により解放されるタイミングでコールバック関数を呼び出す機能を提供します。
コールバック関数はインスタンス生成時に指定します。
※コールバック対象のオブジェクトは、FinalizationRegistry.prototype.register()で指定します。
■構文
new FinalizationRegistry ( cleanupCallback )
- cleanupCallback: オブジェクトがGCにより破棄される際に呼び出されるコールバック関数
FinalizationRegistryオブジェクト(FinalizationRegistryコンストラクターのインスタンス)
■cleanupCallbackの構文
cleanupCallback ( heldValue )
- heldValue: FinalizationRegistry.prototype.registerの第二引数で指定した値
なし
※cleanupCallbackが呼び出されないで、プログラムコードが終了する可能性があります。。
どのようなケースで呼び出されるのかという考証はあまり意味がありません。
そのため、cleanupCallbackの呼び出し前提のコード作成はお勧めしません。
■使用例
下記コードをブラウザにて実行すると、数秒から数十秒後にメッセージがコンソール出力される可能性があります。
(Windows:Firefox、Google Chromeにて確認)
let obj = new Uint8Array( 999999999 );
// インスタンス作成(コールバック関数登録)
const fr = new FinalizationRegistry(
e=>console.log(`${e}がGCでクリアされます`)
);
// オブジェクト登録
fr.register( obj , "obj" );
obj = null;
更新日:2024/06/14
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。