『互联网架构』码农的世界IT@程序员猿媛

『互联网架构』软件架构-JVM(下)(27)

2019-03-11  本文已影响4人  IT人故事会

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『互联网架构』软件架构-JVM(下)(27)

本次说说Class加载器,类的初始化,JDK自带故障排查工具介绍。

Class加载器

JVM结束生命周期:
1.System.exit() 直接就退出了
2.正常运行完
3.异常中止
4.手动kill进程

验证

验证类的格式是否正确
(一)文件格式的验证,class
(二)元数据验证,是否有父类,有父类先加载父类,一般的类都有父类,object
(三)字节码验证,数据流是不是合法的符合逻辑的。方法体进行检测
(四)符号引用验证,访问的时候判断是否有权限来进行引用

准备

为类的静态变量(static修饰)分配内存(方法区),并将启初始化改成默认值

解析

常量池中的引用替换为直接引用

1.如果这个类还没有被加载和链接,那就先加载和链接
2.如果类存在直接的父类,先初始化直接父类
3.如果类存在初始化语句,那就依次初始化语句

类的初始化

  1. new,创建类的实例对象
  2. 反射
  3. 调用类的静态方法
  4. 初始化类的子类,此时需要先要初始化父类
  5. 访问类中的静态变量或者给静态变量赋值
  6. Jvm启动的时候的启动类

JDK自带故障排查工具介绍

PS:了解好类的初始化,对于开发尤为重要,对于自带的故障排查工具,对于内存分析的时候很有用。

上一篇 下一篇

猜你喜欢

热点阅读