• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

JVM 静态变量内存分配探究

JAVA相关 supingemail 1411次浏览 0个评论

好记忆不如烂笔头,能记下点什么,就记下点什么,方便后期的查看.

二话不说,

先看代码一和输出 : 

public class Test {
    private int count1;
    private int count2=2;
    public Test(){
        count1++;
        count2++;
        System.out.println(“”+count1);
        System.out.println(“”+count2);
    }
    public static void main(String[] args) {
        Test t=new Test();
        System.out.println(“”+t.count1);
        System.out.println(“”+t.count2);
    }

启动main函数,输出的结果是:

1

3

 1

 3 

这个应该是没有什么问题,没有涉及到静态变量,顺势而为,所以还是比较好理解的.在堆中申明变量地址,再给变量赋值。

 

再看代码二和输出:

public class Test {
    private static Test tester=new Test(); //启动 step three
    private static int count1;
    private static int count2=2; //启动 step three
    {
        count1++; //启动 step one
        count2++;
        System.out.println(“”+count1);
        System.out.println(“”+count2);
    }
    static{
        count1++;  //启动 step four
        count2++;
        System.out.println(“”+count1);
        System.out.println(“”+count2);
    }
    public Test(){
        count1++;  //启动 step two
        count2++;
        System.out.println(“”+count1);
        System.out.println(“”+count2);
    }
    public static Test getTester(){
        return tester; //启动 step five
    }
    public static void main(String[] args) {
        getTester(); //启动 step six
        System.out.println(“”+count1);
        System.out.println(“”+count2);
    }

}

启动main函数,输出结果如下:

1
1
2
2
3
3
3
3

从这个输出结果可以得出: JVM 在对static变量内存分配的时候,它针对类的处理顺序是:

类{}块——>类构造函数——>static 块——>再是方法块 .

通过这个实例,可以进一步认识到JVM 对static变量以及static 块再内存处理上的顺序,进而可以在实际的代码使用中,做到对static变量的规范合理使用。

 


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明JVM 静态变量内存分配探究
喜欢 (0)

您必须 登录 才能发表评论!

加载中……