同样,终结通常是后台任务,所以它们常常在系统的空闲时间执行。
仔细检查终结器,确保即使不运行这些它们也不会泄漏重要的操作系统资源。
将对在同一垃圾回收传递期间不再活动的对象调用终结器。
如果在verboseGC日志中看到等待收尾的对象,那么请尝试重写应用程序以消除收尾器的使用。
原因有很多,最重要的一个原因是,终结器很难正确编写(并且很容易编写错)。
在使用终结器(finalizer)来创建对象时,其可能会给Java代码带来漏洞。
Finalizer需要牺牲很多性能,并且它们不能(甚至完全不能)保证在预计的时间段运行。
拥有参数的方法不是类终结者(实际上,一个规则应当将这些报告为非法的)。
注意,要求终结器的对象会在内存中多停留一个额外的周期。