我有一个相当复杂的Javascript应用程序,它有一个主循环,每秒调用60次.似乎有很多垃圾收集正在进行(基于Chrome开发工具中内存时间线的'锯齿'输出) - 这通常会影响应用程序的性能.
因此,我正在尝试研究减少垃圾收集器必须完成的工作量的最佳实践.(我在网上找到的大部分信息都是为了避免内存泄漏,这是一个稍微不同的问题 - 我的内存被释放,只是垃圾收集过多了.)我假设这主要归结为尽可能重用对象,但当然魔鬼在细节中.
该应用程序按照John Resig的简单JavaScript继承的方式构建在"类"中.
我认为一个问题是一些函数可以每秒调用数千次(因为它们在主循环的每次迭代中使用了数百次),也许这些函数中的本地工作变量(字符串,数组等)可能是问题.
我知道更大/更重的对象的对象池(我们在一定程度上使用它),但我正在寻找可以全面应用的技术,特别是涉及在紧密循环中被调用很多次的函数.
我可以使用哪些技术来减少垃圾收集器必须执行的工作量?
而且,也许还有 - 可以使用哪些技术来识别哪些对象被垃圾收集最多?(这是一个非常大的代码库,所以比较堆的快照并不是很有成效)