博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM系列(四)生命周期和classloader
阅读量:6086 次
发布时间:2019-06-20

本文共 687 字,大约阅读时间需要 2 分钟。

  大体上,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

 

转载于:https://www.cnblogs.com/ELMND/p/4693062.html

你可能感兴趣的文章
CentOS6.4关闭触控板
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>
exchange 2010 队列删除
查看>>
「翻译」逐步替换Sass
查看>>
H5实现全屏与F11全屏
查看>>
处理excel表的列
查看>>
C#数据采集类
查看>>
quicksort
查看>>
【BZOJ2019】nim
查看>>
LINUX内核调试过程
查看>>
【HDOJ】3553 Just a String
查看>>
Java 集合深入理解(7):ArrayList
查看>>
2019年春季学期第四周作业
查看>>