Java虚拟机---堆上的对象和她的小眷属们会存活多久呢?

1.对象的生命周期

umm,对象的生命周期取决于引用对象的'引用'了

eg:Duck duck=new Duck();    duck就是一个引用。

如果引用还活着,则对象也会继续活在堆上,如果引用(duck)死了,则对象也会跟着殉情-------陪葬------送命-------自挂东南枝。

我对象说,不!QAQ还是‘对象’说:引用在我在,引用亡我亡。


2.引用变量的生命周期

如果对象的生命周期要看引用变量的生命周期,那么引用变量到底会活多久呢?

那么问题来了啦!~!~!~!QAQ!!

umm,这个就要看 它是局部变量还是实例变量

3.局部变量

仅仅只有它所在的那个方法体之内了。(只会有read()记得它了)

只要变量的堆摘块还存在于堆栈上,局部变量就还活着。也就是说----活到方法执行完毕为止。

public class Life{
    
    private string duck;  //实例变量的寿命与对象相同,如果对象在,实例变量也在
     //实例变量----依靠》对象-----》引用

   public void read(){
        int s=12;   //变量s仅限于在read()的方法体内来使用。
        sleep():
   }

    public void sleep(){
        s=7;       //这里就要报错了
    }
}



那么对象中的实例变量呢?

4.实例变量:

       对象认为他是自己家孩子,衣食住行全包。

    我对象会记得我的

umm,对象中的实例变量的声明周期取决于对象的声明周期。

实例变量:对象在,我在。对象亡,我亡。

5.引用变量呢?

        对象认为他是别人家的孩子,只会记下名字。不管衣食住行。

        究级问题:引用变量的生命周期时如何影响对象的生命周期的?

只要有活着的引用,对象也就会活着。如果某个对象的引用已经不在它范围中了,但此引用还是活着的,则此对象就会继续活在堆上。

如果对对象的唯一引用死了QAQ,那对象岂会苟活在人间?对象也会从堆中被踢.引用变量会跟堆栈块一起解散,因此被踢开的对象也就正式的声明出局.关键在于知道何时对象会变成可被垃圾收集器(GC)回收的.

6.那么问题又来了,什么时候对象就被垃圾回收器给干掉了QAQ!?

      一旦对象符合垃圾收集器(GC)的条件,你就无需担心回收内存的问题.如果程序内存不足,GC就会去歼灭部分或全部的可回收对象.可能会遇到内存不足的情况,但这要等到所有可回收的都被回收掉也还不够的时候才会发生.需要注意的是:

引用计数算法(垃圾回收机制中的一种算法):对象用完了就要抛弃。。(这不是渣男嘛?),这样才能让(第三者)垃圾回收器又东西可以回收.如果把持着对象不放,垃圾回收也帮不了什么忙。

       当最后一个引用消失时,对象就会变成可回收的(这时候,GC也差不多开始要动手了)

 

其实,事实上,辣鸡回收算了有好多种的,引用计数算法只是其中的一种啦:但是这个算法对于对象之间相互循环引用就不好处理了,

后续算法,日后再详细记录,最近要考试哦 

umm.有三种方法可以释放对象的引用;

1.引用离家出走:引用永久性的离开它的范围。

                            life会在方法结束时消失

public void leave(){
    Life life=new Life();//life会在方法结束时消失
}  

2.引用出轨:引用被赋值到其他对象上。 

                    第一个对象会在life被赋值到别处时挂掉

Life life = new Life();
life = new Life();        //第一个对象会在life被赋值到别处时挂掉

3.引用无欲无求:直接将引用设定为null。

                 第一个对象会在life被赋值为null时击毙

Life life=new Life();
z=null;                 //第一个对象会在life被赋值为null时击毙

 

       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值