为你的JavaScript内存性能做个体检
来源:互联网 发布:sencha ext js 编辑:程序博客网 时间:2024/06/09 13:43
转载请注明来源:http://blog.csdn.net/horkychen
因为JavaScript的语言特性决定了,它的内存管理更主要的是交给浏览器的JavaScript解释器来处理,这其中被广为人知是垃圾回收(Garbage Collection)机制。不过天生的限制使得JS使用的内存也需要加以控制,特别是现在使用HTML5的游戏对JS内存管理的要求也越来越高。
目前很多的资料都是关注在JavaScript的执行性能上的。如FireBug等工具都能提供相应的功能。下面是一些参考网页:
Javascript性能分析——工具(YUI Profiler)
JSProfiler – JS性能分析工具
移动Web应用程序开发 高性能JavaScript篇 (三) JavaScript 加载解析和部署
javascript 内存泄露工具使用 (内存泄露和内存消耗不算是一个话题,但也可以做为参考)
目前,确实只有Chrome的开发工具,可以获取当前脚本占用的堆(Heap)的状况。在Profiles选择对Heap进行快照分析就可以了。
(下图显示的是某个对象占用17M多的内存)
详细的说明,请点这里。
对于其它的浏览器可以使用vmmap对浏览器查看其总体的内存状况:
以下是Mac OS下vmmap对Safari获取结果 (执行是vmmap pid. 这个pid是Safari运行叫起的另一个进程):
REGION TYPE VIRTUAL
=========== =======
...
JS JIT generated code 256.0M
JS JIT generated code (reserved) 768.0M reserved VM address space (unallocated)
JS VM register file 4096K
JS garbage collector 34.6M
MALLOC 625.0M see MALLOC ZONE table below
...
注意:如果其中JS garbage collector后面数字比较大,表示脚本里有可能存在较多的闭包使得GC不能及时发挥作用。
再使用heap指令,可以看到Malloc Zone中的状况:
VIRTUAL ALLOCATION BYTES
MALLOC ZONE SIZE COUNT ALLOCATED % FULL
=========== ======= ========= ========= ======
JavaScriptCore FastMalloc_0x7fff7d8b8148 534.1M 2863601 307.6M 57%
DefaultMallocZone_0x10b033000 41.1M 42615 9643K 22%
......
我想你已经看出一些问题了,内存开销跑到500M以上去了!
下一步,就是要分析具体是什么在耗费我们的内存,从而优化脚本执行。
Good Luck!
*Windows下也有vmmap, 来自大名鼎鼎的SysInternals组件, 到这里看看 [MSDN LINK].
*Windows下的Heap View在这里。
- 为你的JavaScript内存性能做个体检
- 三大指标 为你的ERP做健康体检
- 为您的爱机经常做个安全体检
- 星云测试-给你的Android应用做个深度体检
- 30个你 “ 不可能全部会做 ” 的javascript题目
- 做个独一无二的你
- 三大指标为ERP做健康体检
- BLOG技巧:用Javascript为你的Blog做一个计数器
- 30个你 “ 不可能全部会做 ” 的javascript题目答案
- 30个你 “ 不可能全部会做 ” 的javascript题目及答案
- java 代码为性能做的事
- 给网站做“体检”
- 商务英语:为你的产品做宣传
- 为你我想做更好的人
- 帮你的JDK做个小手术
- 教你个做电子杂志的方法
- 教你做个漂亮的空间
- 你选择做个什么样的程序员
- 性能调优攻略(3)
- IT行业的薪水到底如何?我们推高房价了吗?
- 嘿牛程序员__成都传智博客__网络编程(下)
- MyEclipse下的SSH2整合
- 【设计模式】雷锋依然在人间 --- 工厂方法模式
- 为你的JavaScript内存性能做个体检
- 移动app开发者必读:国内主要移动广告平台概况
- 5款手机通讯录同步工具
- 在PC环境下用VS2005编译供Windows使用的libpng和zlib库
- jsp下显示硬盘下绝对路径下的中文文件名的图片
- Vim记忆上次编辑的位置
- JAVA项目经验--程序员成长的关键
- 用1 ×2 的瓷砖覆盖8 ×8 的地板,有多少种方式呢?
- mini2440之首个C程序点亮LED分析