回复: 请教各位大大关于动态内存管理的问题…… 有些东西,一次释放多个跟多次释放的消耗是不同的。
比如STL容器,一次insert多个,跟多次insert一个,其代价一般是不同的。
大多数同质的资源在组织的时候都是组织成链表什么的,所以延后释放会有一些优势。
更何况,延后释放可以在运行时作出,根据运行时的负载状况,找到更合适的时机干这个不产生效益的脏活累活还是有好处的。
当然,这样一来,似乎又回到GC的老路上了。不过,我这儿并没有要求compiler把已知的信息都扔掉,然后运行时的gc再一次的恢复这些信息,它们完全可以协作完成这个事情。
对了,我强调一下,sjinny说的信息丢失是我强烈认同的。使用关系图在编译期就能得到一定程度的构建,不需要在运行时完全从零开始构建。着也是sjinny比较喜欢refcount的原因,因为,毕竟,程序逻辑中表达了的使用关系图,在运行时也采用了。当然,我不是说refcount就好,但是某种改进的应该不错,并且显然不会影响程序的局部性。 |