| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> JVM类生命周期概述:加载时机与加载过程 -> 正文阅读 |
|
[Java知识库]JVM类生命周期概述:加载时机与加载过程 |
类加载时机 什么情况下虚拟机需要开始加载一个类呢?虚拟机规范中并没有对此进行强制约束,这点可以交给虚拟机的具体实现来自由把握。 类初始化时机 1)遇到new、getstatic、putstatic或invokestatic这四条字节码指令(注意,newarray指令触发的只是数组类型本身的初始化,而不会导致其相关类型的初始化,比如,new String[]只会直接触发String[]类的初始化,也就是触发对类[Ljava.lang.String的初始化,而直接不会触发String类的初始化)时,如果类没有进行过初始化,则需要先对其进行初始化。生成这四条指令的最常见的Java代码场景是:
[]( )被动引用的几种经典场景 ============================================================================== 通过子类引用父类的静态字段,不会导致子类初始化 public class SSClass { static {
System.out.println( “SSClass” ); } } public class SClass extends SSClass { static { System.out.println( “SClass init!” ); } public static int value = 123; public SClass() { System.out.println( “init SClass” ); } } public class SubClass extends SClass { static { System.out.println( “SubClass init” ); } static int a; public SubClass() { System.out.println( “init SubClass” ); } } public class NotInitialization { public static void main( String[] args ) { System.out.println( SubClass.value ); } } 通过数组定义来引用类,不会触发此类的初始化 public class NotInitialization{ public static void main(String[] args){ SClass[] sca = new SClass[10]; } } 常量在编译阶段会存入调用类的常量池中,本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化 public class ConstClass{ static{ System.out.println(“ConstClass init!”); } public static final String CONSTANT = “hello world”; } public class NotInitialization{ public static void main(String[] args){ System.out.println(“ConstClass init!”); } public static final String CONSTANT = “hello world”; } public class NotInitialization{ public static void main(String[] args){ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:09:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |