java class类对象 加载时机

java class类对象 是在什么时候被加载的?

在 Java 中,类对象的加载时机通常指的是类加载机制中的"加载"阶段,而实例化则是指创建类的实例对象的过程。这两个过程是分开的,下面是详细的解释:

  1. 类加载时机

    • 类加载是指将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。
    • 根据 Java 虚拟机规范,类加载的具体时机是在程序第一次使用到该类时,这个动作是由 Java 虚拟机完成的,具体包括以下几种情况:
      • 使用new关键字实例化对象时。
      • 通过反射机制动态创建类实例时。
      • 当调用Class.forName方法时,如果参数指定为booleantrue,那么也会触发类的加载。
      • 初始化一个类的子类时。
      • 静态字段赋值时,以及静态字段被访问时。
      • 方法被调用时。
      • java.lang.invoke.MethodHandle解析时。
      • 创建数组时,如new int[] { 1, 2 },会触发int类的加载。
  2. 类实例化时机

    • 类实例化是指在 Java 堆内存中分配一个对象,并对其进行初始化,这通常发生在使用new关键字创建对象时。
    • 实例化的具体时机是在代码中显式地通过new关键字或其他方式(如克隆、反序列化)创建类的实例时。

总结来说,类的加载时机是在程序第一次主动使用类时触发的,而类的实例化是在代码中显式创建对象时发生的。类加载是一个自动的过程,由 Java 虚拟机控制,而实例化则是由程序员的代码控制的。

相关推荐
꧁坚持很酷꧂5 分钟前
Qt天气预报系统设计界面布局第四部分右边
开发语言·qt
花仙子1667 分钟前
C#运动控制系统:雷赛控制卡实用完整例子 C#雷赛开发快速入门 C#雷赛运动控制系统实战例子 C#快速开发雷赛控制卡
开发语言·算法·c#
AmosCloud201317 分钟前
3.5 字典树(Trie)与后缀树
开发语言·数据结构·链表·c#
计算机徐师兄18 分钟前
Java基于SSM框架的影院选座系统小程序【附源码、文档】
java·微信小程序·影院选座系统·影院选座系统小程序·影院选座微信小程序·影院选座
爬山算法26 分钟前
Tomcat(116) 如何在Tomcat中解决缓存问题?
java·缓存·tomcat
像素之间31 分钟前
maven的中国镜像有哪些
java·maven
帅气的人12334 分钟前
proto maven 编译 组件
java·maven
Tiger Z35 分钟前
R 语言科研绘图第 13 期 --- 柱状图-堆叠
开发语言·程序人生·r语言·贴图
栗筝i41 分钟前
Maven 详细配置:Maven settings 配置文件的详细说明
java·maven
我命由我1234543 分钟前
26.Java Lock 接口(synchronized 关键字回顾、可重入锁快速入门、Lock 对比 synchronized)
java·开发语言·后端·java-ee·intellij-idea·intellij idea·后端开发