zoukankan      html  css  js  c++  java
  • jvm类加载

    jvm类加载

    java类的生命周期

    加载、验证、解析、准备、初始化

    1. 加载 查找并加载类的二进制数据
    2. 验证 确保被加载的类符合class文件的格式,java版本号,保证文件能够被正确解析
    3. 准备 为类的成员变量分配内存,初始化静态变量
    4. 解析 把类中的符号引用替换成直接引用
    5. 初始化 对类的变量初始化赋值

    jvm的类加载机制

    1. 全盘负责:当一个类加载器负责加载class时,该class所依赖和引用的其他class也将由该类加载器加载除非显示使用另一个类加载器加载
    2. 父类委托:先让父类加载器试图加载,只有在父类加载器在无法加载该类的时候使用子类加载器加载,如果类不存在报classnotfount异常
    3. 缓存机制: 缓存机制保证所有被类加载器加载的class都会被缓存,当程序中需要加载某个class时,类加载器首先从缓存区加载该class,只有在缓存区找不到该class时才从类路径加载二进制数据,并将其转换成class对象,存入缓存区,所以修改了class后,必须重启jvm程序的修改才能生效
    4. 双亲委派模型: 当类加载器收到加载类的请求时,首先委托父类加载器加载,如果父类加载器无法加载,子类加载器才会尝试加载
    5. 三种类加载器 根类加载器 扩展类加载器 系统类加载器
  • 相关阅读:
    Git 常用命令
    Python 常用算法记录
    Python基础Web服务器案例
    你真的懂SDWebImage?
    Core Data的那点事儿~
    看看 SDWebImage内部基本实现过程
    App上架流程 & 上架被拒10大原因
    KVO中你所不知道的"坑"
    math公式手写识别网址
    umi build出现的Path must be a string的问题解决
  • 原文地址:https://www.cnblogs.com/cu-later/p/14617033.html
Copyright © 2011-2022 走看看