说明:
通常情况下,引用计数有一个弱点,“它无法检测循环引用”。但是,在某些情况下,引用计数确实非常有用:
class EmergencyPatient {
DoctorPtr doctor;
EmergencyPatient() { doctor = Doctor::acquire(); }
~EmergencyPatient() { Doctor::release(doctor); }
};
现在,在一个引用计数的世界中,只要我们不再引用 EmergencyPatient,医生就会被释放。
在Java的非引用计数世界中,这在很大程度上取决于何时对EmergencyPatient进行垃圾回收——由于垃圾回收器是分代的,EmergencyPatient可能在较老的一代中,并且长时间不被回收。
问题:
对我来说,医生是非常珍贵的资源;其他 EmergencyPatient 需要医生。然而,对Java来说,EmergencyPatient 对象只是几个字节的内存。
问题:
如何解决这个问题?(有些资源我希望它们在不再使用时尽快释放)。
谢谢!