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();
    
        }
    
    }

     

    执行结果:

    以上案例对应的内存图:

    回收机制:

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

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

        

  • 相关阅读:
    LeetCode 368Largest Divisible Subset
    macbook 源码安装 redis6.2.6
    macbook 源码安装 nginx1.20.1
    MySQL总结
    DataWork之 MaxComputer的使用
    Spring的IOC源码分析
    Spring Bean的生命周期
    SpringMVC工作原理
    Spring全家桶(二)之SpringMVC总结
    (已经成功部署)配置vue+nginx+uwsgi luffy项目
  • 原文地址:https://www.cnblogs.com/android-deli/p/10352310.html
Copyright © 2011-2022 走看看