有没有办法找出网页或jquery应用程序正在使用多少内存?
这是我的情况:
我正在使用jquery前端和一个以JSON提供数据的restful后端构建数据密集型webapp。页面被加载一次,然后一切都通过ajax发生。
用户界面为用户提供了一种在用户界面内创建多个选项卡的方式,每个选项卡可以包含大量数据。我正在考虑限制它们可以创建的选项卡的数量,但我认为仅在内存使用量超过特定阈值时才限制它们是很好的。
根据答案,我想作一些澄清:
更新
如果您想支持所有使用中的主流浏览器,早在2012年是不可能的。不幸的是,目前,这仍然是仅限Chrome的功能(的非标准扩展window.performance)。
window.performance
window.performance.memory
浏览器支持:Chrome 6+
2012年答案
有没有办法找出网页或jquery应用程序正在使用多少内存?我正在寻找一种运行时解决方案(而不仅仅是开发人员工具),以便我的应用程序可以根据用户浏览器中的内存使用情况确定操作。
简单但正确的答案是“ 否” 。并非所有浏览器都向您公开此类数据。而且我认为您应该放弃这个想法仅仅是因为 “手工” 解决方案的复杂性和不准确性可能会带来比解决方案更多的问题。
计算DOM元素或文档大小可能是一个不错的估计,但是由于它不包括事件绑定,data(),插件和其他内存中的数据结构,因此可能非常不准确。
如果您真的想坚持自己的想法,则应将固定和动态内容分开。
固定内容不依赖于用户操作(脚本文件,插件等使用的内存)。 其他所有内容都被认为是动态的,并且在确定限制时应作为主要重点。
但是没有简单的方法可以对其进行总结。您可以实施一个 跟踪 系统来收集所有这些信息。所有操作都应调用适当的跟踪方法。例如:
包装或覆盖jQuery.data方法,以通知 跟踪 系统您的数据分配。
jQuery.data
包装html操作,以便也跟踪添加或删除内容(这innerHTML.length是最佳估计)。
innerHTML.length
如果保留较大的内存中对象,则还应对其进行监视。
至于事件绑定,您应该使用 事件委托 ,然后也可以将其视为一个固定的因素。
另一个很难正确估计内存需求的方面是,不同的浏览器可能会不同地分配内存(对于Javascript对象和DOM元素)。