ITエンジニアの技術メモ

神奈川在住のITエンジニアの備忘録です。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

JavaScriptでメモリーリークするパターン

JavaScriptメモリリークするパターンについてネット上の情報から調べてみた。以下に簡単に纏める。

  • オブジェクト間で循環参照が発生し、各オブジェクトへの参照カウンタが0にならず、オブジェクトが不要になってもGC(ガベージ・コレクション)により回収されない。
  • クロージャの使用。クロージャで生成した変数に、使用後に明示的に null を代入していないと、クロージャ内部のローカル変数などが解放されない場合があるらしい。
  • デタッチされたDOMノード。
  • コンソール・ログへの出力。
  • グローバル変数の使用。

どのパターンでメモリリークするかは、ブラウザ側の実装に依存すると思うので、ブラウザの種類やバージョンによると思われる。

一般的に、クライアント側は、サーバ側に比べると長時間継続して使用されることは少ないので、そこまでメモリリークを気にしないことが多いが、一応、気を付けておきたい。

 

〇参考