为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
JVM

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

####Class加载器

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

  • 加载
    1.取得类的二进制字节流,通过类的全限定名称(包名+类名),类加载器,加载到运行时数据区。
    2.把二进制字节流中静态存储结果转化为方法区数据结构。
    3.在内存中生成代表这个类的java.lang,Class对象,这里是放在堆中。

  • 链接

验证

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

准备

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

解析

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

  • 初始化

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

####类的初始化

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

####JDK自带故障排查工具介绍

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
1318

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消