对象与垃圾回收
2020年8月6日大约 1 分钟约 304 字
Java的垃圾回收机制不会回收任何物理资源,垃圾回收机制只能回收堆内存中对象所占用的内存。
当一个对象在程序中不再被使用时,就成为一个无用对象。主要有如下情况:
- 当前的代码段不属于对象的作用域;
- 把对象的引用赋值为空;
- Java运行时系统通过垃圾收集器周期性地释放无用对象所使用的内存。
Java5时:Java运行时系统会在将对象进行自动垃圾回收前,自动调用对象的finalize()
方法,不过这个finalize()
方法不完全一定执行(相较而言,C++的析构函数是必须被执行的)。
同C和C++的区别
以后再细看这部分……
- C 语言中通过
free
来释放内存; - C++ 中则通过
delete
来释放内存; - 在 C 和 C++ 中,如果程序员忘记释放内存,则容易造成内存泄漏甚至系统内存耗尽;在 Java 中不会发生内存泄漏情况,但对于其它资源,则有产生泄漏的可能性。