chrome 開発ツールを使用して、モジュールの概念を使用するアプリケーションが、他のアプリケーション オブジェクトから直接参照されていなくても、一部の Module オブジェクトがメモリ内に残っていることを最近知りました。
ここでの問題は、それらがいくつかの関数スコープで参照されていることです。
次のスクリーンショットでわかるように:
関数スコープには多くの参照が保持されています。
これは、私のアプリケーションでこれがどのように行われるかを示すコードの一部です。module
内部で参照されているためsomeCallback
、参照があり、自分自身を削除できません。
function augmentModule(core, module){
var someCallback = function(){
module.stop();
};
module.listenTo(core, "someEvent", someCallback);
}
私の質問は:
これは私が心配しなければならない本当のメモリ リークですか、それともこのオブジェクトは後で JavaScript エンジンによってガベージ コレクションされるのでしょうか? JavaScript エンジンは、「このオブジェクトは関数スコープとクロージャー スコープからのみ参照され、「実際の」参照がないため削除できる」ことを認識していますか。?