- 有一个在 AJAX 上更新内容的页面。
- 每次通过 AJAX 进行更新时,页面都会出现一个带有 Javascript 代码的非常大的字符串。
- 然后这段代码通过执行
eval()
(项目很老,所以在那里实现,加上所有变量都只通过声明var
)。
每次通过 AJAX 刷新页面时,都会在内存中添加一个新行(通过 执行的行eval()
)。因此,每次页面更新都会消耗大约 800 KB 的 RAM,即 发生内存泄漏。
为什么会发生这种情况还有待确定。通过 执行 JS 代码时eval()
,字符串可能会保留在 RAM 中。正如您在屏幕截图中看到的那样,这些行的距离等于零,这意味着这些行位于根级别并且没有对象引用它们。
是否有可能以某种方式找出为什么这些行保留在 RAM 中,因为没有人提及它们?并且可以在不以标准方式刷新页面的情况下将它们从 RAM 中删除吗?我非常感谢任何有助于解决此问题的信息。
线路清洁的解决方案有所帮助。这是一篇关于 Habré 的文章:“我需要在 JavaScript 中清理字符串吗? ”。
具体来说,就我而言,出现了以下选项: