我首先思考的是,垃圾回收(GC)的必要。
考虑有三个指针a,b,c都指向同一个对象。如果允许执行:delete c;那么a和b将成为悬浮指针。这就容易导致一些程序错误发生。
因此, java需要GC,首要的原因就是安全性。正是由于安全性的问题导致GC的出现。
GC在技术上的实现,目前我尚不清楚。一个主要疑惑是:对象句柄可能存在于方法区,存在于成员变量,存在于栈中;如果要搜索所有这些地方,
代价岂不是很大?另外如何识别栈中的对象句柄?
对finalizer次序的担忧:考虑有两个或更多的对象,它们的finalizer执行的次序可能是有关系的,不同的执行次序可能导致不同的结果。
我没有看到java对finalizer的执行次序有什么原则。(象C++,由于对象的析构是明确的或者显式的,因此没有争议)
本文讨论了Java中垃圾回收(GC)的重要性,特别是从安全性角度出发,避免悬挂指针带来的问题。作者提出了对于GC技术实现的一些疑问,包括如何有效搜索对象句柄及finalizer执行顺序等问题。
176万+

被折叠的 条评论
为什么被折叠?



