1/31JVM虚拟机 类加载
- loading加载
![]() ![]() JAVA。lang包底下的reflect。反编译从应用破解源码,盗版! 
- 加载已经在内存中有大的class文件
![]() 验证 ![]() 准备阶段静态变量都初始化为0,常量都已经初始化好 
- 符号引用  一个字节码文件不可能全装下各种需要用到的类,而是用一个符号代指,解析就是把符号引用变成指针或偏移量
![]() 
- 初始化
![]() 方法中自动有 ![]() ![]() 按先后顺序初始化,有一个常量 
- 一个特殊,可以先定义声明后改变值
![]() 初始化之前已经有准备阶段 
- 这是类的构造器方法 如果没有类变量,就不会自动生成
![]() 类变量的加载只加载一次 
- 类加载器的分类
![]() ![]() ![]() ![]() 
- 核心类库 由引导类加载
![]() ![]() ![]() ![]() 
- 自定义类加载器  隔离各个容器
![]() ![]() 
- 双亲委派机制
![]() 引导类 Java底下的包都归它管,比如Java.lang ![]() 为了保护 ![]() 知道报错原因,因为核心String类库没有main方法 
- 
双亲委派机制的优势 ![]() ![]() ![]() 
- 
沙箱安全机制 ![]() 放在你用引导类加载器加载自己的恶意攻击 ![]() ![]() ![]() 动态链接需要这个信息 
- 
类的被动使用 ![]() 主动?被动使用的区别就在于clinit()方法会不会使用 
- 
运行时数据区 ![]() ![]() 
- 
原来Java线程和本地线程是一一印射的 ![]() ![]() 守护线程 ![]() 
- 程序计数器  北京烤鸭的钩子,勾住代码  软件层面是一种模拟
![]() 既没有GC也没有OOM ![]() ![]() ![]() 
- 
虚拟机栈 ![]() ![]() ![]() 
- 为什么不需要GC,只能进站出站,没有复杂的算法
![]() ![]() ![]() ![]() ![]() ![]() ![]() 
- 局部变量表
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 字节码行长度 ![]() 15是idea中的行号,一一对应,8是字节码文件的行号 ![]() start PC+length是作用域范围,16就是代码范围长度 
- 槽slot
![]() ![]() ![]() ![]() 引用类型占据一个slot,普通方法第一个就是this ![]() ![]() ![]() ![]() 
- 操作数栈 结合执行引擎
![]() ![]() ![]() 
- 栈顶缓存
![]() ![]() ![]() 
- 动态链接
![]() ![]() ![]() 常量池里啥都有 将符号引用转换为直接地址引用 ![]() ![]() 为什么不直接放 ![]() 因为Java全是引用 ![]() ![]() 标志位Final就不能被重写,就确定了 
- 非虚方法和虚函数
![]() 
 
                    
                     
                    
                 
                    
                


















































































 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号