`

Java垃圾回收机制

    博客分类:
  • Java
 
阅读更多

Collect from "Think in Java".

 

Java有垃圾回收器(以下称为GC)来回收不用的对象占据的内存资源。但也有特殊情况:

如果你的对象(并非使用new)获得了一块“特殊”的内存,由于GC只知道释放那些经由Java new分配的内存,所以GC不知道如何释放该对象的这块“特殊”的内存。

 

为了应对这种情况,Java允许在类中定义一个finalize()方法。它的工作原理“应该”是这样的:

 

一旦GC准备好释放对象占用的内存空间,将首先调用finalize()方法,并且在下一次GC进行垃圾回收时,才会真正地回收对象所占用的内存。

但需要强调:

这歌finalize()函数并不能看做C++的析构函数,在C++中,如果程序没有错误的话,对象是一定会被销毁的。而在Java中,并非所有对象都会被GC进行“回收”的。换句话说:

1、对象可能不被回收。

2、垃圾回收不等于析构。

 

这意味着在不需要某个对象之前,如果必须执行某些动作,那么就得需要自己手动来做。Java并未提供“析构函数”类似的概念,要做类似的清除工作,程序员必须手动创建一个执行清除工作的普通方法。

 

finalize()的用途 

 

看完上面这一段话,相信读者都明白了——不能使用finalize()作为通用的垃圾回收方法。那么finalize()真正的用途是什么呢?

这里引出要记住的第三点:

3、垃圾回收只与内存有关。

 

其实理解简单,Java允许调用C/C++函数、方法,而C/C++可以调用其他语言代码。所以,如果在C/C++编写代码中,使用了malloc进行内存分配,此时GC不能释放这些内存了。所以这个时候,finalize()登场了。 

 

你必须执行清除

Java不允许创建局部对象,程序员必须使用new,在Java中,找不到”delete释放对象,因为GC帮助释放存储空间。但是,GC存在不能替代类似C++析构函数。如果希望进行释放存储空间以外清除工作,还是明确调用某个恰当的Java方法。

 

分享到:
评论

相关推荐

    JAVA垃圾回收机制

    Java垃圾回收机制(GC)是Java编程语言的关键特性,它自动管理内存,释放不再使用的对象,以防止内存泄漏。GC的运作方式主要有两种策略:引用计数和对象引用遍历。 引用计数是一种简单但不完美的方法。每个对象都有...

    Java垃圾回收机制详解和调优.doc

    Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收...

    Java垃圾回收机制总结

    Java垃圾回收机制总结 Java垃圾回收机制是Java虚拟机(JVM)中的一种机制,用于防止内存泄露和有效地使用空闲的内存。垃圾回收机制的主要目的是为了回收无用的对象占用的内存空间,使该空间可被程序再次使用。 ...

    Java中类的生命周期与java垃圾回收机制

    Java中类的生命周期与java垃圾回收机制

    【Java面试题】Java垃圾回收机制

    【Java面试题】Java垃圾回收机制

    细述 Java垃圾回收机制→Java Garbage Collection Introduction - Android 1

    Java垃圾回收机制简介 Java垃圾回收机制是Java语言中的一种自动内存管理机制,它可以帮助程序员更好地编写Java应用程序,而不需要手动编写垃圾回收相关的代码。这篇文章将会介绍Java垃圾回收机制的基本概念和原理,...

    Java垃圾回收机制的学习和使用

    Java垃圾回收机制是Java编程中至关重要的一部分,它自动管理内存,释放不再使用的对象,避免内存泄漏,并优化内存使用。Java虚拟机(JVM)的堆内存是存放对象的主要区域,当对象通过new等指令创建后,垃圾回收机制...

    浅谈JAVA垃圾回收机制.pdf

    浅谈 JAVA 垃圾回收机制 Java 垃圾回收机制是 Java 语言中的一种自动内存管理机制,它可以自动回收内存中的垃圾,避免代码运行时由于忘记释放对象而带来的内存泄漏问题。 Java 中的垃圾回收机制主要通过两种算法来...

    细述 Java垃圾回收机制→How Java Garbage Collection Works- - Android 1

    Java垃圾回收机制详解 Java垃圾回收机制是Java虚拟机(JVM)中的一种自动管理内存的机制,它可以自动地将不再使用的对象从内存中回收,以释放更多的内存空间供其他对象使用。本文将详细介绍Java垃圾回收机制的工作...

    详细介绍Java垃圾回收机制

    Java垃圾回收机制是Java编程语言的关键特性,负责自动管理程序中的内存,确保程序高效、稳定地运行。在Java虚拟机(JVM)中,垃圾回收的主要任务是识别并清理不再被程序使用的对象,以避免内存泄漏。以下是关于Java...

Global site tag (gtag.js) - Google Analytics