加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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,如果您的对象无法访问,它可以在其中一个次要过程中通知您,即使它位于较老一代的区域之一.

我相信这应该是你正在尝试的正确方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读