Java虚拟机类型卸载和类型更新解析

深入理解Java的类加载与卸载机制 类加载是指JVM将.class文件中的二进制数据读入内存中,经过一系列验证、解析和初始化,最终在JVM中生成可以被使用的Class对象。JVM会为每个类加载并生成一个唯一的Class对象,这个对象封装了类的所有信息,包括方法、属性等。类加载的三大步骤:1.加载(Loading):从不同的源(如文件、网络)获取类的二进制字节码,并生成Class对象。2.链接(Linking):对类的二进制进行校验和解析,确保类文件格式正确。验证(Verification):检查字节码是否符合JVM的规范。 阅读详情

Java虚拟机类型卸载和类型更新解析

 

 

首先看一下,关于java虚拟机规范中时如何阐述类型卸载(unloading)的:

 

A class or interface may be unloaded if and only if its class loader is unreachable. The bootstrap class loader is always reachable; as a result, system classes may never be unloaded.

 

Java虚拟机规范中关于类型卸载的内容就这么简单两句话,大致意思就是:只有当加载该类型的类加载器实例(非类加载器类型)为unreachable状态时,当前被加载的类型才被卸载.启动类加载器实例永远为reachable状态,由启动类加载器加载的类型可能永远不会被卸载.

 

我们再看一下Java语言规范提供的关于类型卸载的更详细的信息(部分摘录):

 

//摘自JLS 12.7 Unloading of Classes and Interfaces

 

1、An implementation of the Java programming language may unload classes.

 

2、Class unloading is an optimization that helps reduce memory use. Obviously,the semantics of a program should not depend on whether and how a system chooses to implement an optimization such as class unloading.

 

3、Consequently,whether a class or interface has been unloaded or not should be transparent to a program

 

通过以上我们可以得出结论: 类型卸载(unloading)仅仅是作为一种减少内存使用的性能优化措施存在的,具体和虚拟机实现有关,对开发者来说是透明的.

 

纵观java语言规范及其相关的API规范,找不到显示类型卸载(unloading)的接口, 换句话说:

 

1、一个已经加载的类型被卸载的几率很小至少被卸载的时间是不确定的

 

2、一个被特定类加载器实例加载的类型运行时可以认为是无法被更新的

Java虚拟机:类的加载机制 大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 034 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自己的技术栈的同学。与此同时,本专栏的所有文章,也都会准备充足的代码示例和完善的知识点梳理,因此也十分适合零基础的小白和要准备工作面试的同学学习。 阅读详情

相关推荐

Linux系统下Materials Studio 2020安装避坑指南:从依赖包到许可证配置全流程

本文提供了一份在Linux系统上安装Materials Studio 2020的深度避坑指南。详细解析了从系统依赖包检查、安装流程、许可证配置到Gateway服务部署的全过程,并分享了与Slurm作业调度系统集成的实战经验,旨在帮助用户高效、稳定地完成部署。

weixin_29313547的博客 387

[导入][原创]Java虚拟机类型卸载和类型更新解析

【摘要】 前面系统讨论过java类型加载(loading)的问题,在这篇文章中简要分析一下java类型卸载(unloading)的问题,并简要分析一下如何解决如何运行时加载newly compiled version的问题。 【相关规范摘要】 首先看一下,关于java虚拟机规范中时如何阐述类型卸载(unloading)的: A class or...

a75226的博客 230

量化交易中的烂板策略:短线高频交易实战解析

量化交易通过算法模型实现自动化投资决策,其中短线高频交易是典型应用场景。从市场微观结构看,涨停板现象反映了资金博弈的动态平衡,而烂板策略正是捕捉涨停板短暂打开时的交易机会。该策略结合L2行情数据和Python量化框架,通过参数化规则识别特定形态的烂板股票,在风险可控前提下追求超额收益。实战中需严格遵循动态仓位管理和止损纪律,适用于A股市场短线交易。高频交易与量化分析技术的结合,为投资者提供了新的alpha挖掘工具。

weixin_30432579的博客 365

JVM 类的使用与卸载

这篇文章来介绍类在完成加载后的使用及其卸载.

时间如瑾 代码如诗 1659

BERT + BiLSTM-CRF 处理流程

BERT是一个基于 Transformer 的预训练语言模型。与传统的语言模型不同,BERT 是双向的,即它同时利用上下文信息进行词表示学习。BERT 在大规模语料库上进行预训练,可以捕捉到深层次的语言知识和上下文关系,生成非常丰富的词向量表示。在序列标注任务中,BERT 被用作输入文本的编码器,将每个词映射为上下文相关的词嵌入(embeddings)。

AI Agent 首席体验官 2258

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发STM32H750VB使用STM32CUBEMX生成工程IAR+J-LINK调试准备工作CUBEMX生成的代码问题所在如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U

qq_37433166的博客 5345

Java类的卸载机制

类的生命周期  当Sample类被加载、连接和初始化后,它的生命周期就开始了。  当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命周期。  由此可见,一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。 引用关系  加载器和Class对象:  在类加载器的内部实现中...

xorxos的专栏 1万+

gseapy python包GO、KEGG富集(注释)分析

文档案例参考:https://gseapy.readthedocs.io/en/latest/gseapy_example.html#Over-representation-analysis-by-Enrichr-web-services安装:建议安装最新版(这里安装的1.04):https://github.com/zqfang/GSEApy/releases。

weixin_42357472的博客 3611

[转载]Java虚拟机类型卸载和类型更新解析

【转载】Java虚拟机类型卸载和类型更新解析连接:http://www.blogjava.net/zhuxing/archive/2008/07/24/217285.html【摘要】        前面系统讨论过java类型加载(loading)的问题,在这篇文章中简要分析一下java类型卸载(unloading)的问题,并简要分析一下如何解决如何运行时加载newly compiled vers...

iteye_17873的博客 120

脉冲变压器电感选型参数,结构原理,工艺与注意问题总结

脉冲变压器电感简称脉冲变压器,是一种特殊类型的变压器,主要用于处理脉冲信号。它的主要特性是能够在短时间内承受高电压和大电流。脉冲变压器主要用于开关电源、脉冲功率放大、雷达脉冲调制等领域。本文对脉冲变压器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1347

keil内无法打开ccs图形编程,弹框提示:无法加载一下来源的扩展程序:C:\...清单文件缺失或不可读取,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1377

NAND Flash原理与驱动开发实战:从物理约束到磨损均衡

NAND Flash是一种基于浮栅电荷存储的非易失性存储器,其核心原理在于量子隧穿写入与整体擦除机制,导致写前必擦、不可覆盖、寿命有限等物理约束。为应对电子泄漏、阈值漂移和邻位干扰,必须依赖ECC校验与坏块管理;而为延长使用寿命,需在嵌入式资源受限条件下实现动态磨损均衡。这些技术价值直接支撑工业控制、车载系统、医疗设备等对数据可靠性与长周期运行有严苛要求的应用场景。本文深入解析NAND Flash原理、OOB区设计、MTD驱动适配及YAFFS2/UBI协同机制,覆盖从寄存器时序控制到产线级排障的完整工程链路

weixin_34037515的博客 350

Android Audio音量——音频类型新增(九)

在实际开发中,经常会遇到需要新增一个音频类型(usage)的需求,这里我们简单介绍一下需要修改的代码。

小旭的专栏 1571

Java虚拟机类型卸载和类型更新解析(转)

转自:http://www.blogjava.net/zhuxing/archive/2008/07/24/217285.html 【摘要】 前面系统讨论过java 类型加载(loading) 的问题,在这篇文章中简要分析一下java 类型卸载(unloading) 的问题,并简要分析一下如何解决如何运行时加载newly compiled version 的问题。【相关规...

weixin_34357887的博客 73

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java虚拟机类型卸载相关

转自:http://www.blogjava.net/zhuxing/archive/2008/07/24/217285.html   【摘要】         前面系统讨论过java类型加载(loading)的问题,在这篇文章中简要分析一下java类型卸载(unloading)的问题,并简要分析一下如何解决如何运行时加载newly compiled version的问题。 【相关规范

极e象 830

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

瑞_Java所有相关环境及软件的安装和卸载_图文超详细(持续更新)

本文是博主所了解的Java知识所有相关的环境或软件的安装和卸载(会持续更新)

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 6011

Java中的类加载与卸载机制详解

本文将详细介绍Java类加载的过程、类加载器的工作原理以及类的卸载机制。

YT的博客 1161

java 怎样卸载一个类_java 类型卸载问题

1.自定义类加载器,可以将其设置为unreachable状态 再通过GC卸载掉类 2.使用系统类加载器,但是不能将其设置为unreacheable状态 由于不能直接将系统类加载器设置为unreachable状态,所以当GC回收之后,类型并没有被卸载 3.使用扩展类加载器加载,无法将其状态设置为unreachable 同2,由于不能设置为unreachable,因此扩展类加载器所加载的类型并没有被G...

weixin_33863049的博客 2118

JDK的卸载和安装超详细步骤,小白福利

前言:重装JDK的原因 这是笔者本人重装jdk的心路历程,不感兴趣的同学可以直接跳过到后面的卸载与安装步骤。 最近在学SpringCloudAlibaba的组件,学到分布式事务管理的seata时碰到了如下问题:在windows中使用cmd窗口启动seata-server客户端时,出现启动不了控制台报Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap(初始化虚拟机

h1192341606的博客 3万+

JVM——Java内存、HotSpot虚拟机中的对象和OOM异常实战

Java程序运行时,由java虚拟机管理内存。需要知道虚拟机是如何管理内存,才能处理内存泄漏/溢出问题。

weixin_45021712的博客 1900
上一篇: 对象的默认引用:this
下一篇: 参数传递
Fish3812
博客等级 码龄18年 7粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值