浅谈Java GC机制

Java不像C语言那样需要开发者自己去控制内存的释放,主要是因为Java 的GC 机制,先来了解下什么是gc.

Java GC机制垃圾回收机制,主要是jvm对堆的管理,jvm将堆内存分为两个区域。

一个是young区:包括 一个endon区,两个survivor区(其中一个永远为空)。另一个是old区。生成对象时,先存入young区(容量=endon+一个survivor),满着存入old发生GC时先扫描endon,将存活的对象放入其中的一个survivor区中,若这个survivor区满,则将对象放到另一个survivor区内,然后扫描满的survivor将存活的复制到另一个survivor区,然后将这个满的清空,保证一个survivor为空的状态。如果一个对象经过多次扫面依然存活则放入old区,至于这个多次为多少,我记得好像是16次,并不是固定的,可以更改。

发生 GC 的时机jvm是通过引用计数的方式进行可达性分析,若不可达则清空。

1.当没有线程访问实例

 Such: Object a= new Object(); 1次

      Object b = a;        2次

      b=null;            1次

      a=null;            0次此时jvm可以清除这个实例的内存

 2.实例循环引用 

 Such  :class Node {

Node next;

}

Node a = new Node();

Node b = new Node();

a. next = b;

b. next = a;

放生循环引用也可以清除该内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值