1

我目前正在我的 Web 应用程序中寻找 Internet Explorer 的 JavaScript 内存问题。我正在运行 IE9。我想知道下面提到的场景是否实际上是内存泄漏。

IE9 将选项卡作为一个单独的进程。

它是在 Tomcat 6 上运行的 Java Web 应用程序。应用程序的应用程序上下文(根)是localhost:8080/MyApp

这是用例:

  1. 打开Internet Explorer,进入登录页面(登录页面内存在Windows Task
  2. 登录到应用程序。内存增加到 85MB。
  3. 使用应用程序。用法涉及来自单个页面的 AJAX 调用,导航到不同的页面。所有这些用法都在一个选项卡中。现在内存消耗增加到150MB。
  4. 现在我们退出应用程序回到登录页面。内存使用量下降到 130MB。但理想情况下,它应该等于我们第一次登录页面时的内存使用量(43MB),如果我们再次登录,内存使用量从 130MB 开始。Firefox 或 chrome 不会发生这种情况。

我为 Facebook 和 Gmail 尝试了类似的 IE 用例。我得到了类似的结果。

我想知道这个用例是否指出了脚本中的内存泄漏,或者这是否是 IE 管理单个选项卡的内存的方式。

我也在我的代码中寻找内存泄漏模式,但请让我知道这种情况。

4

1 回答 1

0

确实,JS 中的内存管理超出了您的控制范围,而且查找内存泄漏相当棘手。关于这个主题有很多神话和误解,遍布整个网络。
不过,我前段时间就这个话题提出了一个问题,我发现内存泄漏并不像某些人声称的那样普遍。即使在 IE8 中!

如果您想在 IE 中分析页面,并更详细地查看内存使用情况,您可以使用IEJSLeaksDetector。在链接页面上,您可以下载版本 2.0.1.1...

另请注意,注销永远不会完全释放所有已声明的内存。浏览器出于各种原因(如缓存图像、脚本等)占用内存。检查泄漏的最佳方法是:关闭选项卡,看看有什么影响。关闭浏览器窗口,检查释放了多少内存。
无论你做什么,或者你使用什么浏览器,在今天的操作系统中,内存泄漏是不可避免的。有些泄漏是由 JS 引起的,有些则不是。

于 2013-06-19T11:08:25.810 回答