读书人

2.7 不用使用finalize()

发布时间: 2013-08-04 18:26:16 作者: rapoo

2.7 不要使用finalize()

不使用的理由:

1.不能确定finalize()什么时候被执行

2.不能保证finalize()一定会被执行

3.使用finalize()严重影响性能

4.如果执行finalize()抛出异常,异常被忽略(不会有任何提示),此方法立刻终止执行,导致对象状态不一致

?

在以下情况可以谨慎使用:

1.如InputStream,如果编程者忘记调用close(),可以在finalize()里调用close()释放资源

2.在finalize()里调用native peer(指JNI里与Java对象对应的本地对象)的方法释放本地资源

读书人网 >编程

热点推荐