找出对象是否仍在内存中

时间:2015-08-30 00:52:59

标签: javascript html dom error-handling

有没有办法找出代码中某处引用的javascript对象是否还活着并且在内存中?

我问的原因是我的代码变得非常复杂,我添加了一些" cleanup"应该清除一些参考文献的函数,但我不确定它们是否能够正常工作。我可以以某种方式获取浏览器仍在使用的变量列表吗?

2 个答案:

答案 0 :(得分:1)

JavaScript是完全托管的语言,不允许任何类型的删除功能。[delete keyword仅删除属性但不删除内存中的对象] 清除任何对象的最佳选择是分配给 null 以提供垃圾收集器的提示仍然可能无法在所有方案中工作。 希望这有帮助

答案 1 :(得分:1)

在chrome中,按F12打开调试器,然后执行以下操作:

  1. 单击[时间轴]选项卡
  2. 单击左上角的[Record]按钮;和你的网站一起玩,打开一个菜单,加载一个页面等,你想要检查内存。
  3. enter image description here

    1. 虽然它仍在录制,但请按[垃圾收集器]并等待几秒钟让缓冲区收集更多数据。现在再次按[record]按钮停止录制。
    2. enter image description here

      1. 一旦录制停止,您将看到内存如何分配到堆上的“阶梯”。
      2. 重要的是,在点击[垃圾收集]按钮后,您会看到这些行返回到零。如果没有发生这种情况,那么您可能会发生内存泄漏。
      3. enter image description here

        谷歌拥护者提供了一些非常详细的视频,解释了这个调试器功能,超出了这个简单回答的范围。这只是一个指向调试器功能的指针,您可能希望使用它来测试代码并查找堆上的对象以及是否按预期清理它们。

        您可以使用[个人资料]标签对您的对象进行进一步分析。