2015年更新
早在 2012 年,如果您想支持所有正在使用的主要浏览器,这是不可能的。不幸的是,现在这仍然是Chrome 独有的功能(非标准扩展window.performance
)。
window.performance.memory
浏览器支持:Chrome 6+
2012 答案
有没有办法找出网页或我的 jquery 应用程序使用了多少内存?我正在寻找运行时解决方案(不仅仅是开发人员工具),以便我的应用程序可以根据用户浏览器中的内存使用情况确定操作。
简单但正确的答案是否定的。并非所有浏览器都会向您公开此类数据。我认为你应该放弃这个想法,因为“手工”解决方案的复杂性和不准确性可能会带来比它解决的更多的问题。
计算 DOM 元素或文档大小可能是一个很好的估计,但它可能非常不准确,因为它不包括事件绑定、data()、插件和其他内存数据结构。
如果你真的想坚持你的想法,你应该将固定内容和动态内容分开。
固定内容不依赖于用户操作(脚本文件、插件等使用的内存)。
其他一切都被认为是动态的,在确定限制时应该是您的主要关注点。
但是没有简单的方法来总结它们。您可以实施一个收集所有这些信息的跟踪系统。所有操作都应该调用适当的跟踪方法。例如:
Wrap 或 overwritejQuery.data
方法来通知跟踪系统您的数据分配。
包装 html 操作,以便添加或删除内容也被跟踪(innerHTML.length
是最好的估计)。
如果您保留大型内存对象,则还应监视它们。
至于事件绑定,你应该使用事件委托,然后它也可以被认为是一个有点固定的因素。
难以正确估计内存需求的另一个方面是不同的浏览器可能会以不同的方式分配内存(对于 Javascript 对象和 DOM 元素)。