主题:[原创]『程序员』Java清理:终结处理和垃圾回收
程序员都了解初始化的重要性,但常常会忘记同样也重要的清理工作。毕竟,谁需要清理一个Int呢?但在使用程序库时,把一个对象用完后就“弃之不顾”的做法并非总是安全的。当然,Java有垃圾回收器负责回收无用对象占据的内存资源。但也是有特殊情况:假定你的对象(并非new)获得一块特殊的内存区域,由于垃圾回收器只知道回收哪些之经new分配的内存,所以它不知道该如何释放对象这块特殊的内存。为了应对这些情况,Java允许在类中定义一个名为finalize()方法。它的工作原理“假定”是这样的:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。所以要是你打算用finalize(),就能在垃圾回收时刻做一些重要的清理工作。
这里是一个潜在的编程陷阱,因为有些程序员(特别是C++程序员)刚开始的时候可能会误把finalize()当成C++中的析构函数(C++中销毁对象必须用到的这个函数)。所以有必要明确区分一下:在c++中,一定会被销毁(如果程序没有缺陷的话);而Java里的对象却并非总是被垃圾回收。或者换句话说:
1、对象可能不被垃圾回收。
2、垃圾回收并不等于“析构”。
欢迎咨询重庆市甲骨文学习中心 联系电话023-67863505 联系QQ: 2223439120(何老师) 1049714085(周老师) 网站:http://www.c-base.com.cn/
这里是一个潜在的编程陷阱,因为有些程序员(特别是C++程序员)刚开始的时候可能会误把finalize()当成C++中的析构函数(C++中销毁对象必须用到的这个函数)。所以有必要明确区分一下:在c++中,一定会被销毁(如果程序没有缺陷的话);而Java里的对象却并非总是被垃圾回收。或者换句话说:
1、对象可能不被垃圾回收。
2、垃圾回收并不等于“析构”。
欢迎咨询重庆市甲骨文学习中心 联系电话023-67863505 联系QQ: 2223439120(何老师) 1049714085(周老师) 网站:http://www.c-base.com.cn/