首页 > 其他分享 >Jvm类加载机制

Jvm类加载机制

时间:2023-02-21 19:47:28浏览次数:33  
标签:初始化 静态 引用 Jvm 机制 方法 链接 加载

 

 

 

 

 

其中loadClass的类加载过程有如下几步: 加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载
  • 加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。
  • 验证:校验字节码文件的正确性。

  • 准备:给类的静态变量分配内存,并赋予默认值
  • 解析:将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程序运行期间完成的将符号引用替换为直接引用,下节课会讲到动态链接。

  • 初始化:对类的静态变量初始化为指定的值,执行静态代码块。

 

 

类被加载到方法区中后主要包含 运行时常量池、类型信息、字段信息、方法信息、类加载器的引用、对应class实例的引用等信息。    

标签:初始化,静态,引用,Jvm,机制,方法,链接,加载
From: https://www.cnblogs.com/avalanche/p/17142153.html

相关文章

  • 【java 基础】代码在jvm的内存运行流程分析总结
    堆:存储new出来的对象(包括成员变量、数组、方法的地址)栈:正在调用的方法中的局部变量(包括方法的参数)方法区/元空间:.class字节码文件(包括所有方法)publicclassStudentTe......
  • JVM系统优化实践(2):JVM内存与回收
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~   上次把JVM的类加载过程粗略地过了一遍,今天再来看看JVM运行代码时,系统里发生了什么。就像家里的柴、米、油、盐......
  • ES自定义评分机制:function_score查询
    转:https://blog.csdn.net/w1014074794/article/details/1205235501function_score介绍1.1简介主要用于让用户自定义查询相关性得分,实现精细化控制评分的目的。......
  • jvm内存泄露分析方法
         场景:使用监控工具发现内存使用不断增加,则有可能存在内存泄露,内存泄露可以使用jmap工具进行分析。jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆......
  • 关于Java锁机制的理解
    首先Java中为什么会使用锁:是为了解决Java共享内存模型带来的线程安全问题。思考:两个线程都有初始值为0的静态变量做自增,一个做自减,各做5000次,counter的值会为0嘛?public......
  • Java异常机制
    异常机制代码实际编写后并不一定是完美的,可能会有我们没有考虑到的情况异常类型之前其实已经接触过一些异常了,比如数组越界异常,空指针异常等,这些错误都是异常类型,每一......
  • Fatfs写入刷新机制
    fatfs写入:f_write,单次写入长度不限,但是并非每次写入都直接将数据写入到flash中,而是在写入长度大于一个sector之后,才会调用底层写入接口。f_sync和f_close都会将数据立即......
  • tomcat7 与 tomcat8 加载 jar包的顺序
    本文为博主原创,转载请注明出处:最近在进行服务的环境升级,将服务的tomcat7升级到tomcat8;当把tomcat升级到tomcat8的时候,进行服务启动异常,报jar包冲突的异常,但......
  • Java基础知识(23)- Java虚拟机(JVM)- (2) | 常用的 JVM 性能调优监控工具
    在企业级Java应用开发中,Java程序运行过程中会经常遇到内存不足、内存泄露、线程死锁、CPU高占用等问题。部分问题在日常开发中可能会被忽视或被别变通的方法绕开(比如重......
  • 集群机制:注册表同步以及高可用源码剖析
    1在完成服务注册之后,会将注册信息同步给群里中的其他节点,以实现高可用,续约,服务更新,下线都是一样的操作2拿到集群中其他节点的url信息,同步数据3执行批处理任务,ba......