zoukankan      html  css  js  c++  java
  • JVM系列(四)生命周期和classloader

      大体上,class的生命周期是这样子的:

    加载相关内容

    classLoader是什么?通过一个类的全限定名,获取这个类的二进制字节码。

    区分两种classLoader:

    1、bootStrap,C++实现,是虚拟机的一部分;

    2、其他,java实现,虚拟机外部,继承自java.lang.ClassLoader。

    另外一种区分方式:

    1、启动 Bootstrap Classloader

    主要面对JAVA_HOME/LIB目录

    2、扩展Extention Classloader

    主要面对JAVA_HOME/lib/ext目录

    3、application classloader。

    面对ClassPath目录。

    classLoader的层次关系:双亲委托模型。

    使用这个模型的好处是判定父类是否被加载过,避免重复加载。

    连接

    • 验证
    • 准备
    • 解析
    • 是否初始化判定

    初始化

    一个类被直接引用则初始化,否则就是被动引用,不会初始化

    使用

    卸载

    是否被卸载的判定:

    • 该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
    • 加载该类的ClassLoader已经被回收。
    • 该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。

    怎样卸载?

    在方法区中清空类信息

    有道云笔记:http://note.youdao.com/share/?id=08b5ff2bbad87e4e784104126c5f06f6&type=note

  • 相关阅读:
    OCS 2007 R2下载资源整理
    Windows Server 2012 R2 WSUS 4.0 加速
    JavaScript入门(三)
    JavaScript入门(一)
    JavaScript入门(二)
    CSS基础
    古董代码
    自我介绍
    Android Activity的加载的模式
    Android 数字签名
  • 原文地址:https://www.cnblogs.com/ELMND/p/4693062.html
Copyright © 2011-2022 走看看