• 311 jvm类加载以及对象回收相关


     class加载相关

           类生命周期:加载(读取二进制)、验证(class格式规范,语义分析,引用验证、字节码验证)、准备(分配内存)、解析(类,接口,字段,方法等解析)、初始化(静态变量赋值,执行静态代码块)、使用(实例化)、卸载(从jvm中卸载)

      

          类加载器(至少3个):

              bootstraploader-核心类库加载器:c实现。

            extendionclassloader--扩展类库加载器:jdk扩展包,ext目录包,用户配置的路径

          applicationclassloader---应用程序类加载器:class.path路径

    jps,jcmd可以看到当前运行的java进程

    jcmd pid 可以查看相关的进程配置

    类卸载满足的条件: 1、class的所有实例都被gc 2、加载该类的classloader实例被gc

    java启动参数 verbose:class 可以观察类的加载和卸载

    注意:被加载的类中的静态代码,在第一次使用后才会被加载,loadclass并不会处理

    双亲委派模型:下到上委托,上到下查找。

    每一级的加载器都优先委托给父加载器进行类的加载,如果父加载器反馈加载不到,加载器才会尝试自行加载。

    单纯的classloader不会重复加载同一个class。所以,很多热加载功能的实现思路是,如果检测到类的变化,重新创建一个classloader进行加载。

  • 相关阅读:
    理解MySQL——索引与优化
    Android中shape的使用
    Android之Camera控制拍照
    android的fragments管理
    android的fragment基本介绍
    android的animator
    android软键盘弹出隐藏的监听
    android平板Home键的监听
    android jsonarray
    android 应用静默自启动的解决方法
  • 原文地址:https://www.cnblogs.com/windghost/p/13301084.html
Copyright © 2020-2023  润新知