Java的内存回收机制详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的内存回收机制详解相关的知识,希望对你有一定的参考价值。
http://blog.csdn.net/mengern/article/details/38150431
Java中提供了垃圾强制回收机制的方法System.gc(),但是系统并不保证会立即进行垃圾回收,而是JVM根据定义的一套垃圾回收算法来确定,算法用来提高垃圾回收的效率。
判断一个存储单元是否是垃圾的依据是:该存储单元所对应的对象是否仍被程序所用,即是否有引用指向该对象。Java的垃圾回收器自动扫描对象的动态内存区,对所引用的对象加标记,然后把没有引用的对象作为垃圾收集起来并释放出去。
Java没有提供析构方法,但提供了一个类似的方法:protected void finalize();
程序说明:
- class J_Book {
- private String name;
- J_Book(String name) {
- this.name = name;
- }
- // 覆盖默认的finalize方法
- protected void finalize() {
- System.out.println("Book,\"" + name + "\",is destroyed!");
- }
- }
- public class J_Finalize {
- public static void main(String[] args) {
- J_Book book1 = new J_Book("Gone with wind");
- // 匿名的实例,被Java判定为垃圾内存,会被当做垃圾回收
- new J_Book("Java How to Program");
- new J_Book("Roman Holiday");
- book1 = new J_Book("Thingking in Java");
- // 强制垃圾回收,注意编译系统不会立刻垃圾回收,由自己的算法来决定何时执行垃圾回收
- System.gc();
- }
- }
程序运行结果:
Book,"Roman Holiday",isdestroyed!
Book,"Java How toProgram",is destroyed!
Book,"Gonewith wind",is destroyed!
说明:上述结果是eclipse在调试模式下得出的!
以上是关于Java的内存回收机制详解的主要内容,如果未能解决你的问题,请参考以下文章