返回信息流遇到的一个面试题
问如果有个对象我们想让他延迟回收,应该怎么做?
另外问一下,现在用的最广泛的垃圾回收器是哪个?
谢谢
这是一条镜像帖。来源:北邮人论坛 / java / #66713同步于 2023/3/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
请教如何让延迟某个对象的回收时间?
mouse65
2023/3/6镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
别这样。如果你想继续用这个对象,你就留着一个引用,让GC扫描到它,保持它活着。不要假设GC什么时候会回收某个对象。不要假设finalizer一定会被调用,finalizer已经被deprecated for removal了。
至于用得最广泛的垃圾回收器,这个问题也没意义。naive RC用得很广泛,但它很垃圾。mark-sweep用得也很广泛,但它虽然不是那么垃圾但是也很朴素了。G1是JVM的缺省GC,但它也比较垃圾,吞吐率太差了,实时性也不是那么好。
不如问:什么GC算法吞吐率高?为什么?什么GC算法GC延迟低?为什么?GC延迟低,应用程序延迟就低吗?为什么?延迟又低、吞吐率又高的算法存在不存在?怎么做到?