Android-Java-静态成员变量&成员变量&局部变量(内存图&回收机制)

静态成员变量(回收机制)

StaticDemo 和 MyDemo

package android.java.oop13;

class MyDemo {

    /**
     * 定义一个静态变量
     */
    public static String country = "中国";

}

public class StaticDemo {

    public static void main(String[] args) {

        /**
         * 能够使用 类名.静态成员变量,是因为静态成员变量是存放在(方法区(数据共享区) 的 静态区中)
         * 属于共享数据,不需要实例化对象,直接拿类名访问静态成员变量即可
         */
        System.out.println("country:" + MyDemo.country);

    }

}

执行结果:

 对应以上案例的内存图:

回收机制:

  静态成员变量的回收机制是:随着类的加载而加载,随着类的消失而消失,由于类需要非常长时间的不使用,不利用,不关联,才有可能会被回收机制回收,

所以静态成员变量的生命周期特别长,除非是共享数据,否则不建议使用静态;




成员变量:

Demo 与 DemoTest

package android.java.oop13;

class Demo {

    /**
     * 定义一个普通成员变量name
     */
    public String name;

    // 定义此方法就是为了打印name
    public void showName() {
        System.out.println(this.name);
    }

}

public class DemoTest {

    public static void main(String[] args) {

        Demo demo = new Demo();

        demo.name = "许文强";

        demo.showName();

    }

}

执行结果:

以上案例对应内存图:

 回收机制:

  成员变量:是随着对象的实例化而存在,随着对象的回收而消亡,所以比静态成员变量生命周期要短一些,建议非共享数据,定义成 成员变量;




  

局部变量:

Demo 与 DemoTest:

package android.java.oop13;

class Demo {

    public void showName() {

        /**
         * 定义局部变量
         */
        String name = "谢晓峰";

        System.out.println(name);
    }

}

public class DemoTest2 {

    public static void main(String[] args) {

        Demo demo = new Demo();

        demo.showName();

    }

}

 

执行结果:

以上案例对应的内存图:

回收机制:

   局部变量:局部变量的回收机制 生命周期 现对于 静态成员变量/成员变量/ 来说是最短的;

   因为 方法一旦弹栈/出栈 此局部变量就会被回收了;

    

原文地址:https://www.cnblogs.com/android-deli/p/10352310.html