Java中的垃圾收集
发布时间:2020-12-15 08:31:42 所属栏目:Java 来源:网络整理
导读:博览会: 通常,引用计数具有“它无法检测循环”的弱点.但是,在某些情况下,引用计数非常有用: class EmergencyPatient { DoctorPtr doctor; EmergencyPatient() { doctor = Doctor::acquire(); } ~EmergencyPatient() { Doctor::release(doctor); } }; 现在,
博览会:
通常,引用计数具有“它无法检测循环”的弱点.但是,在某些情况下,引用计数非常有用: class EmergencyPatient { DoctorPtr doctor; EmergencyPatient() { doctor = Doctor::acquire(); } ~EmergencyPatient() { Doctor::release(doctor); } }; 现在,在参考计数世界中,一旦我们不再参考EmergencyPatient,医生就会被释放. 在Java的非refcounted世界中,这在很大程度上取决于EmergencyPatient何时被垃圾收集 – 并且由于垃圾收集器是世代的,因此EmergencyPatient可以是老一代,而不是很长时间收集的. 问题: 对我来说,医生是一种非常宝贵的资源;其他EmergencyPatient需要医生.但是,对于Java,EmergencyPatient对象只是几个字节的内存. 题: 解决这个问题的正确方法是什么? (一旦我知道它们不再被使用,我想要释放一些资源). 谢谢! 解决方法
如果检查4个引用对象,则有一个引用对象变为“符合垃圾回收条件”时会通知您.这意味着您不必等待“大”GC,如果您的对象无法访问,它可以在其中一个次要过程中通知您,即使它位于较老一代的区域之一.
我相信这应该是你正在尝试的正确方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |