【JSリファレンス】new FinalizationRegistry()

更新日:2024/06/14

初出:ECMAScript2021


FinalizationRegistryコンストラクターは、オブジェクトがGC(ガベージコレクション)により解放されるタイミングでコールバック関数を呼び出す機能を提供します。

コールバック関数はインスタンス生成時に指定します。
※コールバック対象のオブジェクトは、FinalizationRegistry.prototype.register()で指定します。

 

■構文

new FinalizationRegistry ( cleanupCallback )
  1. cleanupCallback: オブジェクトがGCにより破棄される際に呼び出されるコールバック関数
FinalizationRegistryオブジェクト(FinalizationRegistryコンストラクターのインスタンス)

 

■cleanupCallbackの構文

cleanupCallback ( heldValue )
  1. 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

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。