2013-03-24 62 views
0

是否可以在JavaScript中计算创建的对象和变量?计算所有使用的对象和变量

我使用Google Chrome来分析我的网络应用。但要调试并找到导致“内存泄漏”的对象并不那么容易(至少对我而言)。所以我想知道在当前页面上创建的所有对象和变量,以便我知道它们是否被删除。

+0

请张贴一些代码;我们不能帮助你,如果我们不知道你在做什么! – Mooseman 2013-03-24 22:46:25

+1

我真的不认为这是可能的。 – 2013-03-24 22:47:22

+0

要做的事情是识别导致整体内存使用增加的页面行为/活动。 – Pointy 2013-03-24 22:48:18

回答

3

不,您不能在Chrome(或任何其他主要浏览器)中执行此操作。你可以使用Chrome的“内存”页面(铬://内存/)获得一些的想法是怎么回事,但它不是对象级别,并且重要的是要明白垃圾回收不是发生同步或立即。浏览器/ JavaScript引擎可能会分配内存,将其用于某些JavaScript对象,然后再正确理解这些对象不再使用,但保留内存以方便将来使用。

相反,你可以做的是研究JavaScript如何工作的细节,它告诉你什么将(通常)保存在内存中,以及为什么。了解how closures work(披露:这是我的贫血小博客上的一篇文章),并且了解IE如何不处理DOM元素和JavaScript对象之间的循环引用(具体来说,当没有任何内容引用时,它不会很好地清理它们他们了,否则通常不是问题)。一般来说,除非你有特定的问题需要解决,否则不要太担心。 (这绝对会发生,但并不像人们有时想象的那么多。)

+1

+1刚刚学到了新东西。 – 2013-03-24 22:51:10

+0

我刚刚在Google Chrome的Timeline-Plugin中看到:当我开始录制页面时,它从20MB开始 - 40MB,然后我切换到其他页面,其中的MB为20MB - 47MB,我切换回来,它从47 MB​​跳转到63 MB。这是正常的吗? I.E.我按F5时应该清洁内存吗? – 2013-03-24 22:59:29

+0

或者一个简短的问题:当我们刷新页面(F5)时会发生什么?内存是否重置? – 2013-03-24 23:01:15