[Java] Garbage Collection是什么?

阅读时间: 2分钟

Garbage collection 就是指垃圾回收,在Java中是一个程式负责自动执行记忆体管理。利用Garbage collection可以找到没有用的物件(Object)和删除它们,从而释放记忆体。
还有,这个Garbage collection只发生在Heap记忆体区间。

而触动Garbage collection的机制就是当物件再没有被参照(Reference),就表示那个物件已经没有用途,所以可以重新分配它所佔用的记忆体。
如果没有重新分配没用的物件的记忆体,就会出现memory leak。最终导致系统的记忆体不足。

例子解释:

public class GarbageCollectionExample {int results1;String results2; //设置物件的内容  public void setData(int results3,String results4){results1=results3;results2=results4;  }//显示物件的内容的方法  public void showData(){    System.out.println("Value of results1 = " + results1);    System.out.println("Value of results2 = " + results2);  }    public static void main(String args[]){GarbageCollectionExample object1 = new GarbageCollectionExample(); //创建新物件叫object1GarbageCollectionExample object2 = new GarbageCollectionExample(); //创建新物件叫object2object1.setData(100,"A"); //设置物件的内容object2.setData(50,"B"); //设置物件的内容object1.showData(); //显示物件的内容    object2.showData(); //显示物件的内容        GarbageCollectionExample object3; //创建新物件叫object3        object3=object2; //将object2的reference 完完整整地copy去到 object3    object3.showData(); //显示物件的内容 (会与object2一样)        object2=null; //把object2设为null,即移除所有reference        object3.showData(); //显示物件的内容    object3=null; //把object3设为null,即移除所有reference            object1.showData();    object3.showData(); //会出现错误许讯息  }}

运用以上程式会出现的结果:
http://img2.58codes.com/2024/20119569C8A4Ow8zf2.jpg

由于object3.showData();中的object3已经没有任何reference,
只是null,不存在任何东西。
所以会出现"NullPointerException"。

另外,会留意到object1是不受影响的,
因为在整个过程中,没有去修改object1的reference。
所以修改其他object的动作都不会影响object1。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章