Java 中的垃圾回收
垃圾回收器是一个自动管理内存的程序,其中对象的解除分配由 Java 而不是程序员处理。在 Java 编程语言中,使用 new
运算符实现对象的动态分配。创建的对象使用一些内存,并且内存保持分配状态,直到有对象的使用参考。
当没有对象的引用时,假定不再需要它,并且可以回收由该对象占用的内存。当 Java 自动处理解除分配时,没有明确需要销毁对象。
实现此目的的技术称为垃圾回收 - Garbage Collection。当系统中没有剩余内存要分配时,不取消分配内存的程序最终会崩溃,这些程序有内存泄漏。
Java 中的垃圾回收在程序的生命周期内自动发生,取消需要释放内存的需要,从而避免内存泄漏。在 C 语言中,程序员有责任使用 free()
函数取消分配动态分配的内存。这就是 Java 内存管理的领导地位。
注意:所有对象都在 Heap
内存部分中创建。在后面的教程中有更多相关内容。
示例:学习 Java 中的垃圾回收器机制
步骤 1: 将以下代码复制到编辑器中。
class Student{
int a;
int b;
public void setData(int c,int d){
a=c;
b=d;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
public static void main(String args[]){
Student s1 = new Student();
Student s2 = new Student();
s1.setData(1,2);
s2.setData(3,4);
s1.showData();
s2.showData();
//Student s3;
//s3=s2;
//s3.showData();
//s2=null;
//s3.showData();
//s3=null;
//s3.showData();
}
}
步骤 2: 保存,编译并运行代码。如图所示,创建了两个对象和两个引用变量。
步骤 3: 取消注释行#20,21,22。保存,编译和运行代码。
步骤 4: 如下图所示,两个引用变量指向同一个对象。
步骤 5: 取消注释行#23 和 24.编译,保存并运行代码
步骤 6: 如下图所示,s2 变为 null,但 s3 仍指向该对象,不符合 java 垃圾回收的条件。
步骤 7: 取消注释行#25&26。保存,编译和运行代码
步骤 8: 此时没有指向对象的引用,并且有资格进行垃圾回收。它将从内存中删除,无法将其检索回来。
如何删除 Java 中的对象?
-
如果要使对象符合垃圾回收条件,请将其引用变量指定为 null。
-
原始类型不是对象。它们不能被指定为 null。