golang 和 Java 有没有类似 c++的 unique_ptr 的库/实现?

2022-08-24 17:52:49 +08:00
 yhvictor
rt
我想着大部分垃圾回收的内容实际上都是 unique_ptr 。
也就是非常容易进行垃圾回收的部分。
有没有库做类似的事情?期望节省 gc 时间。
还是说编译时编译器已经把这事情做了?
1043 次点击
所在节点    问与答
4 条回复
ysc3839
2022-08-24 19:28:23 +08:00
有 GC 的语言无法实现 RAII 吧,因为对象析构时间不确定。一般来说 GC 语言会有相关语法糖来实现类似 RAII 的效果,比如 Java 的 Try with Resources
lostpg
2022-08-24 20:10:20 +08:00
你的意思是,多数对象的生命周期都非常短,并且有着确切的生命周期,所以希望有个能尽早释放这类资源的 GC 策略或者库?感觉你在说 python 的那套 GC 方案,RC + mark&sweep ,但是这样为 GC 系统引入了更多的复杂度;同时这么做的收益挺低的,逃逸分析就已经能够回收掉一大部分短命的对象了。
agagega
2022-08-24 20:18:24 +08:00
我想过这个问题,答案是引用计数对象可以持有 GC 对象,但 GC 对象不能持有引用计数对象(否则引用计数也没意义了)
dbskcnc
2022-08-24 20:27:39 +08:00
golang Arenas 正在搞, 1.20 有望能用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX