zoukankan      html  css  js  c++  java
  • 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();
    
        }
    
    }

     

    执行结果:

    以上案例对应的内存图:

    回收机制:

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

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

        

  • 相关阅读:
    看一下有没有好的解决方案!
    netinet/in.h详细介绍
    【合集】zz数组与指针的艺术深入探索c/c++数组与指针
    struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
    C Socket实例
    C语言中malloc与free
    函数fp()、数组a[i]和箭头符号>的由来
    linux gcc编译错误
    怎样检测内存泄露
    dlmalloc解析连载完结【总】
  • 原文地址:https://www.cnblogs.com/android-deli/p/10352310.html
Copyright © 2011-2022 走看看