我正在处理大量的数据。
机制:
JavaScript正在读取WebSQL数据库,然后将数据组装成具有树结构的Object。
然后应用于树对象knockout.js(使元素可观察),然后数据绑定 ,然后在最后应用Jquery Mobile UI。有没有办法控制Chrome GC?
整个过程需要不可接受的时间。
我已经优化算法,使树对象的数据, 还优化转换为observables机制,将项目直接推入到ko.observable数组中并仅调用hasMutated一次。 我正在将knockout.js IF绑定应用于不处理UI中的不可见树节点,直到父项被打开。
这里的表现是关键。
在Chrome开发人员工具中检查时间线中的页面加载后,我注意到当我构建树对象时,垃圾收集器正在清理每个并发呼叫。
问:有没有办法暂时禁用浏览器的GC,然后重新启用它,我与页面处理完成后?
PS我知道我可以添加对收集到的部分的引用,主要介绍支配并阻止GC收集的对象,但这需要通过代码进行重大更改,并且我不确定我能保持足够长的时间,并且它很可能会引入内存泄漏。当然,必须有更好的办法
你确认性能问题是关于JavaScript,而不是DOM?你可以注释掉'//ko.applyBindgs(viewmodel);',它跳过了所有的DOM变化,你可以测试纯粹的JavaScript性能。 – huocp
您无法禁用GC,因为它的执行是在JavaScript上独立管理的,您只能强制执行它由开发人员工具 –
重复http://stackoverflow.com/questions/13950394/forcing-garbage-collection-in-google-chrome –