java并发编程实战wwj----------第二阶段-------------classloader----------------43-44-45

代码:

内存溢出。

内存泄漏:虚拟机已经回收了但是堆内存还是一直在涨。

加载的过程:

结束一个jvm生命周期的方式。

准备:为静态变量分配内存。

解析:类的成员变量

obj是符号引用,变为直接引用。

//访问某个类或者接口的静态变量,或者对该静态变量进行赋值操作
//1.对某个类的静态变来那个进行读写 ->class
//2.对接口中静态变量进行读取      ->interface

静态代码块在什么时候调用:https://www.cnblogs.com/jpfss/p/9789953.htmlhttps://blog.csdn.net/sinat_34089391/article/details/80439852

几个重要的测试:



        (1)通过子类访问父类的static变量,不会导致子类的初始化.初始化子类一定初始化父类
        System.out.println(Child.salary);

        (2)定义引用数组,不会初始化类
        Obj[] arrays = new Obj[10];


        (3)final修饰的常量会在编译期间放到常量池中,不会初始化类
        System.out.println(Obj.salary);
        (4)final修饰的复杂类型,在编译期间无法计算得出,会初始化类
       System.out.println(Obj.x);

----------------------------------------------------------------42-----------------------------------------------------------------------------------------------------

代码:

   

这两个代码换地方结果是不同的。

-----------------------------------------------------------------43----------------------------------------------------------------------------------------------------

类的加载:

方法区方class的信息。

JVM:

方法区:运行的常量池  静态变量  class的基本信息  字段 是堆的逻辑单元

运行常量池:方法区的一部分

堆:数据

程序计数器:

虚拟机栈:栈帧

本地方法栈:C++的东西

二级寻址

一级寻址

----------------------------------------------------------------44-----------------------------------------------------------------------------------------------------

发布了278 篇原创文章 · 获赞 11 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览