当前位置: 首页 > news >正文

JVM(九)-- 类的生命周期

目录

一、概述

二、Loading(加载)阶段

1.类模型和Class实例的位置

2. 数组类的加载

三、Linking(链接)阶段

1. 验证阶段

2. 准备阶段

3. 解析阶段

四、Initialization(初始化)阶段

1. static与final的搭配问题

2. ()的线程安全性

3. 类对的主动使用和被动使用

五、类的卸载


一、概述

Java中基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。

从class文件到加载到内存中的类,到类卸载出内存为止,它的声明周期包括如下的七个阶段:

二、Loading(加载)阶段

加载阶段,简而言之就是查找并加载类的二进制数据,生成Class的实例。

1.类模型和Class实例的位置

加载的类在JVM中创建相应的类结构,类结构会存储在方法区中。

类将.class文件加载到方法区(元空间)后,会在堆中创建一个Java.lang.Class对象,用来封装类位于方法区内的数据结构,该Class对象是在加载类的过程中创建的,每个类都对应有一个Class类型的对象。

2. 数组类的加载

三、Linking(链接)阶段

1. 验证阶段

这个阶段的目的是保证加载的字节码是合法、合理且符合规范的。

2. 准备阶段

这个阶段是为类的静态变量分配内存,并将其初始化为默认值。

注意:

  • 这里不包含基本数据类型的字段用static final修饰的情况,因为final在编译的时候就会分配了,准备阶段会显式赋值。非final修饰的变量,在该环节进行默认初始化赋值
  • 这里不会为实例变量初始化,类变量(静态变量)会分配在方法区中,实例变量(成员变量)会随着对象一起分配到Java堆中
  • 这个阶段不会有代码的执行

3. 解析阶段

该阶段是将类、接口、字段和方法的符号引用转换为直接引用。

用大白话解释就是,我要去北京天安门,我告诉你需要先乘坐9号线然后转13号线。9号线和13号线就是符号引用,如果你想真正到达,你就需要去找9号线和13号线具体在哪里,然后去乘坐。9号线和13号线所在的位置就是直接引用。

四、Initialization(初始化)阶段

该阶段是为类的静态变量赋予正确的初始值。

1. static与final的搭配问题

2. <clinit>()的线程安全性

3. 类对<clinit>的主动使用和被动使用

只要是对类进行初始化这一阶段,那么就会涉及到<clinit>的主动使用

除了以上情况外,其他的所有情况都属于被动使用。即不会进行类的初始化操作。

五、类的卸载

一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。

方法区的GC频率也很低,部分原因也是因为想要回收方法区中的类模板的条件还是太苛刻了。类加载器一般是不可以被回收的,用户自定义的类加载器才可能被回收。

http://www.dtcms.com/a/470184.html

相关文章:

  • 数字孪生重构智慧园区:众趣科技何以成为 VR 园区领域标杆
  • LeetCode 刷题【113. 路径总和 II】
  • 网站英文联系我们毕设做购物网站系统的原因
  • 当涂城乡建设局的网站wordpress 链接主题
  • 利用ps制作网站的设计江苏省建设工程集团
  • Linux内核架构浅谈9-Linux内核的开源生态:开发者协作与版本迭代机制
  • 【经验总结】AUTOSAR架构下NvM进入无限循环问题分析
  • 春招准备之Git篇
  • 11-py调用js
  • 分析竞争对手网站公司网站建设怎么
  • 2.Xshell效率实战:SSH管理秘籍的技术
  • 长春网站建设长春建设一个视频网站需要什么
  • 网站建设的设计方案平度市网站建设
  • Salesforce项目老掉坑?这8个思维陷阱千万别踩
  • 从递归到迭代的全方位解析——力扣38.外观数列(Count and Say)
  • 深度学习(DL)概念及实例操作
  • 基于单片机的四点位水位控制与报警系统设计
  • 如何将Python脚本输出(含错误)全量保存到日志文件?实战指南
  • 3d网页游戏排行做360手机网站优化
  • Unreal Engine 中的旋转表示:FQuat 与 FRotator 全面解析
  • 设计模式-解释器模式
  • 望牛墩镇仿做网站泰州建设网站
  • 网站建设与网页制作基础入门教程祥云平台官方网站
  • Unreal Engine C++ 开发核心:USceneComponent 常用方法详解
  • 陪诊陪护小程序前端功能解析:就医照料的便捷对接与全流程保障
  • 在线PhotoShop网页版常用快捷键和实用技巧
  • 湖南建设网站公司h5四合一网站建设
  • (一)黑马React(项目初始化/字体和样式/列表循环/高亮排序/自定义hooks/异步RTK)
  • 酒泉网站建设有限公司自己怎样做公司广告视频网站
  • 基于Python的旅游数据可视化系统的分析与设计-计算机毕设 97740