在C等語言中,內存管理和回收對於程序員來說是非常痛苦的,因為這需要程序員具有極高的編碼水平來確保自主回收內存不會導致程序出現問題。在Java這門優秀的語言中引入了垃圾自動回收機制(GC),雖然這犧牲輕微的效率,但卻使得程序員更加專注于代碼邏輯,並且搭建和管理程序也變得更加輕鬆和高效。下面我們通過一個有趣的小程序來演示Java垃圾自動回收的機制:
一、創建一個學生類,並且重寫系統的finalize()方法:
package cn.bjsxt.oop08;
public class Student {
String name;
public Student(String name) {
super();
this.name = name;
}
public Student() {
super();
}
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
System.out.println(name+"一路走好,兄弟");
}
}
二、創建測試類,在測試類裡面創建多個學生類對象,然後讓這些對象賦值為空,並且調用System.gc()方法通知垃圾回收器回收垃圾:
package cn.bjsxt.oop08;
public class Test {
public static void main(String[] args) {
Student student1=new Student("学生1");
Student student2=new Student("学生2");
Student student3=new Student("学生3");
Student student4=new Student("学生4");
Student student5=new Student("学生5");
Student student6=new Student("学生6");
Student student7=new Student("学生7");
student1=null;
student2=null;
student3=null;
student4=null;
student5=null;
student6=null;
//student7=null;
System.gc();
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三、這是運行結果:
学生3一路走好,兄弟
学生6一路走好,兄弟
学生5一路走好,兄弟
学生4一路走好,兄弟
学生1一路走好,兄弟
学生2一路走好,兄弟
第二次運行結果:
学生2一路走好,兄弟
学生6一路走好,兄弟
学生5一路走好,兄弟
学生4一路走好,兄弟
学生1一路走好,兄弟
学生3一路走好,兄弟
你也可以測試一下,每次的運行結果都會不一樣。
2017/10/24 BIT创作,您可以免费转载和使用!(本模块博客是作者学习期间整理的学习心得,不是java技术的标准严格学习文档,仅作参考交流使用,对于使用本文档的后果,作者不作任何口头或书面的承诺)