java 多线程垃圾回收_Java 垃圾回收

Java 垃圾回收

1 什么是Java 垃圾回收

在Java中,垃圾意味着未引用的对象。

垃圾回收是自动回收运行时未使用的内存的过程。换句话说,这是销毁未使用对象的一种方法。

我们在C语言中使用free() 函数,在C ++中使用delete()。但是,在Java中它是自动执行的。因此,java提供了更好的内存管理。

2 Java 垃圾回收的优势

它使Java内存更加高效,因为垃圾回收器从堆内存中删除了未引用的对象。

它由垃圾收集器(JVM的一部分)自动完成,因此我们无需付出额外的工作。

3 如何取消对象引用

有很多方法可以取消对应引用:

通过取消引用

通过分配对另一个的引用

通过匿名对象

3.1 通过取消引用

Employee e=new Employee();

e=null;

3.2 通过分配对另一个的引用

Employee e1=new Employee();

Employee e2=new Employee();

e1=e2;//now the first object referred by e1 is available for garbage collection

3.3 通过匿名对象

new Employee();

4 finalize()方法

每次在垃圾回收对象之前会调用finalize()方法。finalize()方法可用于执行清理操作。finalize方法定义在Object类中:

protected void finalize(){}

注意:JVM的垃圾收集器仅收集那些由new关键字创建的对象。因此,如果您创建了不是使用new的任何对象,则可以使用finalize方法执行清理操作(销毁这些对象)。

5 gc()方法

gc() 方法用于调用垃圾收集器以执行清理操作。gc() 定义在System和Runtime类中。

public static void gc(){}

注意:垃圾收集是由称为垃圾收集器(GC)的守护程序线程执行的。在对象被垃圾回收之前,该线程调用finalize()方法。

6 Java 垃圾回收的例子

package com.yiidian;

/**

* 一点教程网: http://www.yiidian.com

*/

/**

* Java 垃圾回收的例子

*/

public class Demo{

public void finalize(){

System.out.println("object is garbage collected");

}

public static void main(String args[]){

Demo s1=new Demo();

Demo s2=new Demo();

s1=null;

s2=null;

System.gc();

}

}

输出结果为:

object is garbage collected

object is garbage collected

注意:终结和垃圾收集都不被保证的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值