首页 > 其他分享 >04_类加载

04_类加载

时间:2023-07-06 10:22:19浏览次数:34  
标签:初始化 04 文件 赋值 父类 class 加载

类加载

什么时候需要进行类加载

  1. new、putstatic、getstatic、invokestatic字节码指令时,如果尚未初始化,则需要先触发初始化
  2. 对类进行反射调用时
  3. 初始化一个类时,如果父类尚未初始化
  4. 虚拟机启动时,用于需要指定一个包含main()方法的主类,虚拟机会先初始化这个主类

加载类的过程

  1. 加载:查找并加载类的class文件,该class文件可以来自本地磁盘和网络等,通过IO的手段加载诚2进制的流
  2. 验证:确保类型的正确性,比如class文件的格式是否正确、语义是否符合语法规定、字节码是否可以被JVM安全正确的执行等
  3. 准备:为类的静态变量分配内存,并赋初始值。比如int类型的赋值为0,引用类型赋值为null
  4. 解析(最复杂):将符号引用转为直接引用
  5. 初始化:为标记为常量值得字段赋值的过程。只对static修饰的变量或语句进行初始化,如果初始化一个类的时候,其父类尚未初始化,则优先初始化其父类。

类加载器

将class文件加载进JVM的方法区,并在方法区中创建一个Java.lang.class对象作为外界访问这个类的接口

类加载器的分类

  1. 启动类加载器:加载类的路径为<JAVA_HOME>/jre/lib/
  2. 扩展类加载器:加载类的路径为<JAVA_HOME>/jre/libext/
  3. 应用程序加载器:最广泛的类加载器,负责加载用户classpath下的class文件,也叫系统加载器
  4. 自定义类加载器

双亲委派模型

如果一个类加载器收到加载类的请求,它首先将请求交给父类加载器加载,若父类加载器加载失败,当前类加载器才会自己加载类

标签:初始化,04,文件,赋值,父类,class,加载
From: https://www.cnblogs.com/xulinjun/p/17531358.html

相关文章

  • 【2023-07-04】就睡酒店
    20:00我在生活中,永远是追求宁静的工作和简单的家庭生活。为了实现这个理想,我一直竭力保持宁静的环境,以免受人事的侵扰和盛名的喧嚣。                                            ......
  • 动态库如何被加载
    linux的可执行文件都是ELF格式,它肯定是会有个section叫.interp,这里面保存的是动态链接器的路径。  我们在执行这个ELF格式的可执行文件时,内核会先根据.interp节找到动态链接器,然后把控制权交给动态链接器,由动态链接器去加载依赖的动态库。1、链接器如何找到依赖的动态库......
  • AtCoder Beginner Contest 304
    A:1#include<cstdio>2#include<cstring>3#include<algorithm>4#include<iostream>5#include<string>6#include<vector>7#include<stack>8#include<bitset>9#include<cstdlib>10#include......
  • 04_MyBatis03
    1.动态SQL问题之前我们在查询用户信息的时候,可以设置根据不同的条件查询用户信息,具体代码如下:可以根据用户id查询用户的信息Mapper接口publicList<User>queryUserById(Integerid);Mapper.xml<selectid="queryUserById"resultType="user"> select*fromuserwhere......
  • 5分钟学会img标签加载图片404错误解决方案
      在开发中,使用<imgsrc="/img/yys.png"/>加载图片时,会有404错误,也就是图片未找到问题。  现将解决办法 总结如下:  当图片未找到或者404时,就会触发<img/>标签的 onerror属性显示其中的图片。1、直接拼写路径方式:<imgsrc="img/yys.png"onerror="javascript......
  • ASP.NET MVC PUT DELETE 404 C# mvc delete put 失败
    对于使用Url路由访问页面的ASP.NET应用程序,IIS可能会显示404,403之类的错误代码,而且排除了代码问题(本地运行正常),那么就可以加下面这句话:<system.webServer><modules><removename="UrlRoutingModule-4.0"/><addname="UrlRoutingModule-4.0"type="......
  • springboot 加载自定义的属性配置文件 或者xml文件
    1、properties user.propertiesname=zhangshanage=18  2、xml Pen1.xml<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd"><properties><......
  • 04vgg剪枝
    数据集介绍Cifar10数据集是经典的图像分类数据。首先下载数据并制作成Dataset和DataLoaderDataset:Dataset是一个抽象类,它定义了数据的存储和访问方法。它的主要任务是加载和预处理数据。用户可以从此类派生出自定义的数据集类,以处理特定类型的数据(如图像、文本等)。DataLoader:D......
  • 在linux开发板上加载.ko驱动文件时,出现“insmod: ERROR: could not insert module led
    本文档仅用于本人在学习过程中的记录,方便日后查找问题。问题描述:在ubuntu虚拟机编译出的xxx.ko文件,发送到linux开发板上,执行insmodxxx.ko时,出现“insmod:ERROR:couldnotinsertmoduleled.ko:Invalidmoduleformat”错误。原因查找:1)在linux开发板上,使用uname-r查看lin......
  • 直播商城源码,加载网页、html文件显示加载进度
    直播商城源码,加载网页、html文件显示加载进度新建加载WebViewActivity新建WebViewActivity加载网页html文件 classWebViewActivity:AppCompatActivity(){     overridefunonCreate(savedInstanceState:Bundle?){    super.onCreate(savedInstanceSta......