6

JavaScriptのメモリリークを単体テストする方法はありますか? つまり、javascript コードからヒープに直接アクセスして、デタッチされた DOM ツリーやメモリ使用量の増加をチェックする方法はありますか?

Chrome Dev Tools からこれを実行できることは知っていますが、単体テストから直接実行する方法があるかどうか疑問に思っています。コードを記述し、ヒープ スナップショットを作成し、メモリ リークが発生する可能性のある操作を実行するのは面倒なので、別のヒープ スナップショットを取得し、コードの別のスニペットを書き込むたびに、メモリ リークの可能性がある操作ごとに繰り返します。ある場所にコードを追加すると、アプリケーションの別の部分で予期しないメモリ リークが発生する可能性があることは言うまでもありません。

大量のメモリ リークが発生するアプリケーションを作成しただけで、最初からやり直さなければなりませんでした。今回アプリケーションを開発するときは、メモリ リークが発生したことを単体テストで検出できるようにし、できるだけ早くそれを排除できるようにしたいと考えています。

このような C++ 用のツールは見たことがあると思いますが、Javascript 用は見たことがありません。誰か知っていますか?ありがとうございました!

4

3 に答える 3

4

window.performance に関する MDN のドキュメントによると、Google Chrome には、usedJSHeapSize、totalJSHeapSize、jsHeapSizeLimit などの値にアクセスできる非標準の拡張機能 ( window.performance.memory ) があります。

--enable-precise-memory-infoバイトレベルの精度を取得するには、フラグを使用する必要があります。

ガベージ コレクションの場合、ブラウザーに強制的に GC を実行させる唯一の方法は、特別なコマンド フラグを使用して Chromium を使用することです。このコマンドを実行すると:

chromium-browser --js-flags='--expose_gc'

window.gc()GC を強制するために呼び出すことができるメソッドにアクセスできます。

これにより、たとえば単体テストでメモリ使用量をテストする可能性が開かれる可能性があります。

于 2016-12-07T17:41:12.720 に答える