java对象的销毁详解

KLQ 2020-09-10 14:45:53 java常见问答 5952

对象使用完之后需要对其进行清除,下面的文章内容就对这个方面的知识进行了较为详细的介绍,一起来看看这个方面的知识吧。

前面讲到了清除,对象的清除指的就是释放对象占用的内存。

在创建对象的时候,用户必须使用new操作符为对象分配内存,但是要注意了,在清除对象的时候,由系统自动进行内存回收,不需要用户额外处理,这也是Java语言特色之一,在某种程度上方便了程序员对内存的管理。

Java语言的内存自动回收称为垃圾回收(Garbage Collection)机制,简称GC

垃圾回收机制是指JVM用于释放那些不再使用的对象所占用的内存。

Java语言并不要求JVM有GC,也没有规定GC怎样工作,但是,常用的JVM都有GC,并且很多的GC都使用类似的算法管理内存和执行回收操作。

一个对象被当作垃圾回收主要有以下的两种情况:

1、对象的引用超过其作用范围

{
    Object o = new Object(); // 对象o的作用范围,超过这个范围对象将被视为垃圾
}

2、对象被赋值为null

{
    Object o = new Object();
    o = null; // 对象被赋值为null将被视为垃圾
}

在java的Object类当中,提供了一个protected类型的finalize()方法,所以的话,任何的java类都能够覆盖这个方法,在这个方法中进行释放对象所占有的相关资源的操作。

Java虚拟机的堆区,每个对象都可能处于以下几种状态之一:

1、可触及状态:在一个对象被创建之后,只要程序当中还有引用变量引用它,那么它就始终处于可触及状态;

2、可复活状态:当程序不再有任何引用变量引用该对象时,该对象就进入可复活状态,在这样的状态下,垃圾回收器会准备释放它所占用的内存,在释放之前,会调用它及其他处于可复活状态的对象的finalize()方法,这些finalize()方法有可能使该对象重新转到可触及状态;

3、不可触及状态:当Java虚拟机执行完所有可复活对象的finalize()方法之后,假如,这些方法都没有使该对象转到可触及状态,垃圾回收器才会真正回收它占用的内存。

注意一下了,调用System.gc()或者是Runtime.gc()方法也不能保证回收操作一定执行,它只是提高了Java垃圾回收器尽快回收垃圾的可能性。

对于java对象的销毁就介绍到这里了,更多java基础内容,请继续通过奇Q工具网来进行了解和学习吧,希望上面的内容可以对你的java学习过程有所帮助。

推荐阅读:

java访问对象的属性和行为详细介绍

java匿名对象实例

java创建对象详解,隐含创建对象介绍