hel*_*922 14 garbage-collection pointers shared-ptr
共享指针(例如boost :: shared_ptr或新的std :: shared_ptr)和垃圾收集方法(例如用Java或C#实现的那些)之间有什么区别?我理解它的方式,共享指针跟踪变量指向资源的次数,并在计数达到零时自动销毁资源.但是,我的理解是垃圾收集器还管理内存资源,但需要额外的资源来确定对象是否仍然被引用,并且不一定会立即破坏资源.
我的假设是否正确,使用垃圾收集器和共享指针之间是否存在其他差异?此外,如果有人执行类似的任务但性能数据不同,为什么有人会在共享指针上使用垃圾收集器呢?
Pla*_*ure 14
正如您所指出的,主要区别在于资源何时被释放/销毁.
GC可能派上用场的一个优点是,如果您拥有需要很长时间才能发布的资源.对于短暂的程序生命周期,最好让资源悬空并最终清理它们.如果达到资源限制,则GC可以采取行动释放其中一些限制.另一方面,共享指针在引用计数达到零时立即释放其资源.对于具有昂贵时间要求的资源的频繁获取 - 释放周期而言,这可能是昂贵的.
另一方面,在一些垃圾收集实现中,垃圾收集要求整个程序在检查,移动和释放内存时暂停其执行.有更聪明的实现,但没有一个是完美的.
| 归档时间: |
|
| 查看次数: |
5694 次 |
| 最近记录: |