如何预防和防范闭包内存泄漏

How to prevent and guard against closure memory leaks

var utils = (function() {
  var playlistutils = (function() { // playlist utils
    return {
      saveplaylisobj: function(playlist) {
        if (playlist) {
          localStorage.setItem('playlistobj', JSON.stringify(playlist));
        }
      },
      getplaylistobj: function() {
        var plobj = localStorage.getItem('playlistobj');
        if (plobj) {
          return JSON.parse(plobj) || {};
        }
      }
    };
  })();


  return {
    playlistutils: playlistutils
  };
})();

这个关闭是否可能导致内存泄漏?

我 运行 遇到 chrome 移动设备 android 在 运行 我的网络应用程序时间歇性崩溃的问题。

参考:What does this stack trace mean?

应用程序细节: 服务器:JBOSS 框架:Angular 重,javascript 和 jQuery

我没有看到这里有泄漏。而且,无论泄漏是 material,它都必须拥有大量内存,或者是创建和泄漏数千次的东西,或者两者的某种组合。这看起来不像会被多次声明并且不会占用大量内存的东西。

无论如何,您在这里使用 IIFE 过于复杂(导致难以遵循代码)并且完全没有必要。您可以只使用一个没有机会关闭的对象文字:

var utils = {
    playlistutils: {
        saveplaylistobj: function(playlist) {
            if (playlist) {
              localStorage.setItem('playlistobj', JSON.stringify(playlist));
            }
        },
        getplaylistobj: function() {
            var plobj = localStorage.getItem('playlistobj');
            if (plobj) {
              return JSON.parse(plobj) || {};
            }
        }
    }
};