码迷,mamicode.com
首页 > 编程语言 > 详细

Java 编程思想 第五章 ----初始化与清理(1)

时间:2014-12-02 20:48:18      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   使用   sp   java   strong   

从今天开始每天一小时的java 编程思想的阅读和编码,其实就是把书上的代码抄下来。

  • 5.5 清理:终结处理和垃圾回收

      初始化和清理工作同等重要,但是清理工作却被常常忘记,但是在使用对象之后,对对象弃之不顾的做法并不是很安全。Java有自己的垃圾回收器负责回收无用的对象占据的内存资源。但也有特殊情况:假定你的内存区域不是用new获得的,这是无法用垃圾回收器释放所以java中允许在类中定义一个名为 finalize()的方法。

      工作原理:

一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时才会真正的回收对象占用的内存。(与C++中的析构函数不同,C++中new创建,delete销毁,如果忘记,就会发生内存泄漏,而Java中的对象并不是都是用垃圾回收的)以下是三个要点:

  1.   对象可能不被垃圾回收
  2. 垃圾回收并不等于析构
  3. 垃圾回收只与内存相关 

Java中虽然有垃圾回收,但是并不能完全代替c++中的析构函数的功能

示例:

 1 //:initialization /TerminationCondition.java
 2 //Using finalize() to detect an object that
 3 //hasn‘t been properly cleaned up
 4 class Book{
 5     boolean checkedOut = false;
 6      Book(boolean checkOut) {
 7         checkedOut = checkOut;
 8     }
 9     void checkIn(){
10         checkedOut = false;
11     }
12     protected void finalize() {
13         if(checkedOut)
14             System.out.print("Error:Checked out");
15         //Normally, you‘ll also do this:
16         //super.finalize();//call the base-class version
17     }
18 }
19 
20 public class Rock{
21     public static void main(String []args) {
22         Book novle = new Book(true);
23         novle.checkIn();
24         new Book(true);
25         System.gc();
26         
27     }
28 }

output:

Error: checked out

注意:System.gc()用于强制进行终结动作


Java 编程思想 第五章 ----初始化与清理(1)

标签:style   blog   io   ar   color   使用   sp   java   strong   

原文地址:http://www.cnblogs.com/fillim/p/4138359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!