zoukankan      html  css  js  c++  java
  • 浅层了解Java垃圾回收机制——Java面向对象基础(3)

    一、试图通过 "指向给创建的对象变量赋值为NULL" 来实现释放资源

    public class Cat {
        String catName;
        public void catSay(){
            System.out.println(catName+"喵喵喵");
        }
    }
    public class my_main {
    
        public static void main(String[] args) {
            Cat cat=new Cat();//对象实例化
            
            cat=null;//指向null
            
            cat.catName="小花";//再赋值
            System.out.println(cat.catName);//报错,空指针异常
        }
    }

      结果:

        图片解析:

      分析:此例中,如图实际上创建的new Cat()空间并没有马上消失,cat中原本储存的地址xfff000变为null,因此如果使用属性会产生空指针异常

    二、试图通过 "调用System.gc()" 来释放资源

    public class my_main {
    
        public static void main(String[] args) {
            Cat cat=new Cat();//对象实例化
            cat.catName="小花";//再赋值
    
            System.gc();//呼叫垃圾收集器,提高被回收的几率。
            
            System.out.println(cat.catName);
        }
    }

      结果:

       1.可以看到最终结果,任然能够输出创建对象的属性值。jvm中提供了自动垃圾回收功能,其方式采用轮询的方式进行。

       2.System.gc();//呼叫垃圾收集器,提高被回收的几率。但仅仅是提高被回收几率,并不能正真立即回收。何时被回收是无法确定的。

    三、Java中释放对象资源的一般操作

  • 相关阅读:
    CF140CNew Year Snowmen
    ZR10.1青岛集训三地联考
    CF1228——记一次和紫名失之交臂的CF
    CF1220
    codeforce 382 div2 E —— 树状dp
    codeforce 381 div2
    codeforce 380(div.2)
    Bishops Alliance—— 最大上升子序列
    codeforce 379(div.2)
    模板——BigInteger
  • 原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12462551.html
Copyright © 2011-2022 走看看