随着我越来越多地像高级面向对象语言那样使用JavaScript,我发现自己的思考方式就像完成对象时的C/C++程序员一样。我知道GC最终会运行并清理我的烂摊子,但是我能做些什么来帮助它吗?
例如,我有一个大型/复杂的主对象数组...每个主对象内部可能有数组和其他子对象引用。如果我完成了一个主对象并将其从数组中删除,GC可能最终会找出该对象自身指向的所有其他内容,循环内部引用和所有内容。但是,当从存储阵列中删除主对象以遍历它并对任何数组执行array.length=0操作并对任何对象执行reference=null操作,从而基本上简化GC工作时(例如,显式删除引用意味着GC跟踪的次数更少),这样做有意义吗?可以说是一种手动析构函数。这样做值得吗?或者我是在浪费时间/精力,收获很少/没有收获?
我认为这更像是GC问题(Java等)的一般理论,但我主要对这个问题的目的是对JavaScript感兴趣。
谢谢!
发布于 2012-12-21 03:33:04
非常聪明的人在这些垃圾收集模型上付出了很大的努力。与他们实现的相比,您所做的任何事情都将极大地提高性能的可能性相对较低。
如果垃圾收集正在成为您的主要成本,那么您最好专注于减少必须进行垃圾收集的对象数量(考虑Object Pool Pattern)
https://stackoverflow.com/questions/13978873
复制相似问题