虚拟机执行子系统--类加载之双亲委托

胡说八道JVM—java虚拟机概论 虚拟机是一个相对于 “物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行哪些不被硬件直接支持的指令集格式。 阅读详情

为什么是双亲加载机制?   这样的好处在哪?

加载器默认的有三个: 启动类加载器   扩展类加载器  应用程序类加载器  他们加载的位置不一样 ,启动类加载器加载的是java原生的jar包 lib下面目录的,扩展类加载的是jre/ext下sun公司或者javax的扩展包  ,应用程序加载器加载的是项目.classpath里面的jar包。当我们写了一个类  jvm在加载的时候,前提是我们自己没有写自定义加载器,他会先去找应用程序类加载器,应用程序类找扩展类,扩展类找启动类加载器,这样的好处是在于如果想object这样的类,不会有三个启动器都去加载,,从而导致得到不同的object,我们知道不同的加载器去加载class文件,会构建出不同的class结构在内存,那么初始化的时候用哪个class结构呢 ?所以这里用了双亲委托加载机制,并且三个默认的加载的类都是不同的加载位置,只有上面的加载器加载不到的jar包,下面的加载器才会去加载。这样就不会在内存结构有多个class文件的重复加载。如果你不想在jdk/libjre/lib  .classpath 下面去加载jar。你还可以自己去自定义加载器类。但是得继承应用程序类加载器。这就是双亲委托机制。


深入理解Java虚拟机:JDK7实战解析(高清第二版) 虽然JVM提供了默认的类加载机制,但在某些场景下(如热部署、网络加载、加密类加载等),我们仍需要自定义类加载器。@Override// 从网络下载类文件的逻辑int data;= -1) { 阅读详情

相关推荐

蓝牙 - 如何在Windows下抓取蓝牙数据

选择Windows Instarller(64-bit),最好不要选择PortableApps版,因为后面需要通过btvs.exe来启动Wireshark,如果是绿色可移植版,会启动失败。在安装完以后,找到btvs.exe文件,位于路径:C:\BTP\v1.14.0\x86下,这个视安装版本不同路径名不同。在第一台机器上启动btvs.exe,第二台机器上手动启动wireshark,并将第一台机器的IP地址作为参数。1,同一机器上,Wireshark安装后,会自动直接启动,如上面使用方式一样。

guoqx的专栏 2万+

Java笔记——java - JVM 详解_java jvm

JVM 详解jvm 介绍大致简略图 类加载器子系统 加载阶段引导类加载器:负责加载 本地库,包名java开头的jar 或者类扩展类加载器:负责加载jdk\lib\ext 下面的包系统类加载器:负责加载开发人员编辑创建的类双亲委托机制 加载类的时候,首先会逐步向上找到最顶端的加载器然后加载器根据自身负责加载条件是否满足,满足条件加载,不满足向下传递,让下一个类加载去加载链接阶段 初始化阶段赋值操作 举例子如下: 运行时数据区程序计数器java 栈(简称 栈)先看下详情的结构图(一个方法对应一个栈帧) 局部

a25847a的博客 644

Palantir 产品架构深度解析:从本体到AI的决策智能平台

本文深度解析了Palantir决策智能平台的核心产品架构。其核心在于构建企业级的“本体”(Ontology),即业务世界的“数字孪生”,通过数据、逻辑、操作三层抽象统一语义。平台以此为基础,通过Foundry构建数字孪生,并通过AIP(人工智能平台)实现本体增强生成(OAG),将AI深度融入业务,形成从数据感知、智能分析到行动执行的完整决策闭环。

ooo22的博客 735

Java虚拟机的详细概述。

Java 虚拟机(JVM)是一个抽象的计算机器,它提供了一个可以执行 Java 字节码的运行时环境。它的核心价值在于“一次编写,到处运行”(Write Once, Run Anywhere)。虚拟机(Virtual Machine): 它是一个规范,而不是一个物理实体。它通过软件模拟了一个完整的计算机系统(包括处理器、堆栈、寄存器等),运行在宿主操作系统之上。核心任务: 读取.class文件(包含 Java 字节码)并将其转换为特定操作系统和硬件架构的本地机器指令并执行。关键角色。

qq_39126115的博客 1566

华南理工大学电子与信息学院23年预推免复试面试经验贴

华南理工大学电子与信息学院23年预推免复试面试经验贴

Scut_Ty的博客 3297

海量Embedding进行相似度查询和比较的方法

这个是在科研中的现实需求。例如每一个源代码文件,我们可以生成一个embedding,如果有超过5000万个embedding(例如用BERT生成5000万个embedding),怎么样有效地计算相似性呢(例如有5000个positive的embedding,想在5000万个中找到类似的)。 简单介绍一下我尝试的结果:如果直接用torch.cosine_similarity,我手里的数据估计至少要处理两个月。这时候就想到了用LSH -- Locality Sensitive Hashing,但是我之前并没怎

qysh123的专栏 4567

Java笔记——JVM 详解

JVM 详解jvm 介绍大致简略图 类加载器子系统 加载阶段双亲委托机制 链接阶段 初始化阶段赋值操作 举例子如下: 运行时数据区程序计数器java 栈(简称 栈)先看下详情的结构图(一个方法对应一个栈帧) 本地方法栈堆结构图:> 堆内存大致分为两部分:第一部分 新生代+ 老年代 称谓 堆、第二部分原空间。配置 方法区 后面会讲解整体的java 类执行过程就能更好的理解执行引擎本地方法接口本地方法库java 代码 执行过程其他虚拟机早期java 出过:当然还有其他虚拟机例如:

a25847a的博客 524

【tio-websocket】15、学习tio的第1步—tio-study

tio-study 是用于学习 t-io 的示范工程,tio-study 是入门 t-io 最好的方式!tio-study 工程演示的是一个典型的 TCP 长连接应用工程,分为 server(服务端) 和 client(客户端) 工程,server 和 client 共用 common(公共模块) 工程

JACKAL 1万+

2020-08-05

Jvm虚拟机模型。## 标题 总的来说,虚拟机分为三层。 类加载子系统。 运行时数据区 执行引擎。 我们通过字节码文件加载的过程来了解虚拟机的结构。 当字节码开始加载的时候,它会被类加载器进行加载。加载器官方定义有两种。一种是bootstrap引导类加载器。它是由c语言写的。用来加载Java的核心类库。剩下的execution class loader,Application class loader全部都是继承class loader类,属于自定义类加载器。 包括我们自己写的加载器都属于自定义类型的加载

qq_46532693的博客 267

AI智算-K8s+vLLM & Ray:DeepSeek-r1 671B 满血版分布式推理部署实践

自从上次发布 【AI-智算】K8s+SGLang实战:DeepSeek-r1:671b满血版多机多卡私有化部署全攻略] 文章后,本次将演示另一个主流推理引擎工具——vLLM,结合K8s、LWS、Ray、Volcano等技术栈,部署DeepSeek-r1 671b 满血版分布式推理集群,并对比其与SGLang推理引擎的性能表现。

Kason_iWiki 1825

PCL 直通滤波

内容抄自优快云点云侠:[【2024最新版】PCL点云处理算法汇总(C++长期更新版)](https://blog.youkuaiyun.com/qq_36686437/article/details/114160640)。质量无忧,永久免费,可放心复制粘贴。

m0_51204289的博客 903

深入理解Java虚拟机 类加载子系统2

与C/C++那些需要在编译器期进行连接工作的语言不同,Java类的加载、连接和初始化都是在程序运行时完成的,只有在类被需要的时候才进行动态加载。1)JVM何时加载类? 有且只有以下5种情况: 创建新对象(new)、设置/读取static字段(putstatic/getstatic)或调用静态方法(invokestatic)这四条指令时,如果该类没有初始化,则初始化。 使用java.lang.ref

isunn的专栏 1789

Vue2 - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,vue实现vr看720度全景效果方案讲解及示例代码(兼容电脑PC网页+手机H5移动端页面)

vue全景VR图,vue h5实现全景720预览,vue加载720全景图_vue怎么加载vr图片,vue实现vr全景看房,vue2实现全景效果,加载很慢卡怎么办,实现全景预览的插件,vue显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于vue实现vr全景预览,加载全景图,vue全景预览pannellum插件,vue实现3D全景图,实现720°全景图展示,在VUE 中使用three.js实现全景视频播放,vue项目中使用photo-sphere-viewer实现vr720度

🏆 前端领域优质创作者 3317

类加载子系统

1.类加载机制 JVM把class文件加载到内存,并对数据校验,解析和初始化,最终形成JVM可以直接使用的java类型的过程 1.1加载 将class文件字节码加载到内存,并将这些静态数据转化成方法区中运行时的二进制的数据结构,在堆中生成一个代表类的java.Lang.Class,作为方法区类数据的访问入口 1.2链接 将java的二进制代码合并到jvm的运行状态之中的过程 验证:确保加载的...

weixin_43319635的博客 1498

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

虚拟机执行子系统

class 文件由紧密的二进制流组成,为了可以正常读取必须按一定顺序存放数据,用无符号数来表示各种属性与表示表的大小。无论如何,一个类的所有信息都包含在了对应的 class 文件中由于无符号数有字节的限制,因此 java 才有一些大小限制条件,比如方法名、字段名、方法长度的限制class 文件只是一串二进制字节流,它可以是磁盘中的文件,也可以是网络传进来的数据、数据库读取进来的文件,也能是虚拟机运行时动态生成的为什么用户想要自定义类加载器?

sekever的博客 755

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JVM学习(一)类加载子系统

类加载器子系统 idea安装插件jclasslib Bytecode viewer,能方便查看字节码 什么是类的加载? 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验转换解析和初始化最终形成可以被虚拟机直接使用的java类这就是虚拟机的类加载机制,这个过程通过类加载器子系统完成。 与那些在编译时需要进行连接工作的语言不同在java语言中类型的加载连接和初始化过程都是在程序运行期间完成的这种策略虽然会令类加载时稍微增加一些性能开销,但是为java感用程序提供高度的灵活性java里天生可以动态

ZeroLinDD的博客 372

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

一,JVM之体系结构和类加载子系统

JVM之体系结构和类加载子系统 一,JVM的整体架构 HotSpot VM是目前市面上高性能虚拟机的代表作之一。采用解释器与即时编译器并存的架构 JVM的架构图: java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构 两者之间的区别: 基于栈式架构的特点: 设计和实现更加简单,适用于资源受限的系统 避开了寄存器的分配难题,使用零地址指令方式分配 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现 不需要硬件支持,可移植性

沧海皎珠 238

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?

因为热爱所以坚持,因为热爱所以等待。熬过漫长无戏可演的日子,终于换来了人生的春天。他逐渐被人熟知,被人喜爱 三年前,在苏州园区被面试官开口就是JVM问懵,根据知识点反复总结的面试问题 待更新 全网JVM最详知识大全 文章目录①. JDK中包含了哪些内容?②. 三大商业虚拟机③. 谈谈你对JVM整体的理解④. 简述Java类加载机制(Java类加载过程)⑤. 什么是类的加载、链接、初始化⑥. 类的主动使用和被动使用⑦. forName("Java.lang.String")和loadClass("Java.l

所得皆惊喜 1万+

双亲委托类加载机制_JVM之类加载器、加载过程及双亲委派机制

Java 虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。1|2虚拟机的执行一个运行中的 Java 虚拟机有着一个清晰的任务:执行 Java 程序。程序开始执行时他才运行,程序结束时他就停止。执行一个所谓的 Java 程序的时候,真真正正在执行的是一个叫做 Java 虚拟机的进程。...

weixin_35120608的博客 152

1、JVM-类加载子系统

JVM-类加载子系统JVM组成图1. 类加载子系统1.1 概述1.2 类加载过程1.2.1 加载1.2.2 验证1.2.3 准备1.2.4 解析1.2.5 初始化总结1.3 类加载器1.3.1 加载器1.3.2 类加载器的关系1.3.3 ClassLoader1.3.4 双亲委托机制 JVM组成图 1. 类加载子系统 1.1 概述 ​ 代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行。虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被

weixin_38650898的博客 264

一文读懂类加载机制 --- ClassLoader

From:https://www.cnblogs.com/sunnick/p/9609326.html 【JVM笔记】classloader加载class文件的原理和机制:https://www.jianshu.com/p/52c38cf2e3d4 JVM 架构整体架构 在进入 classloader 分析之前,先了解一下 jvm 整体架构: ...

墨鱼菜鸡 2264

JVM(一) 类加载器、类加载过程、JVM参数设置

每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。通过这种层次模型,可以避免类的重复加载,也可以避免核心类被不同的类加载器加载到内存中造成冲突和混乱,从而保证了Java核心库的安全。,即 将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。

m0_56799642的博客 1127

深度解析JVM类加载器与双亲委派模型

Java虚拟机(JVM)是Java程序运行的核心,其中类加载器和双亲委派模型是JVM的重要组成部分。本文将深入讨论这两个概念,并解释它们在实际开发中的应用。类加载器是JVM的一部分,负责加载Java类的字节码文件。Java应用程序中的每个类都必须由类加载器加载,类加载器将类的字节码文件从磁盘或网络加载到内存中,并在JVM中创建一个对应的Class对象。双亲委派模型是一种类加载器之间的层次结构,它通过父类加载器委派给子类加载器加载类。

weixin_43268715的博客 2381

jvm (一)jvm结构 & 类加载 & 双亲委托模型

参考文档: jvm内幕-java虚拟机详解:http://www.importnew.com/17770.html 常量池:https://www.jianshu.com/p/c7f47de2ee80 字节码执行引擎:http://www.cnblogs.com/deman/p/5489895.html 一、JVM结构(jdk1.7) 可以看出,JVM主要由类加载器...

weixin_30519071的博客 122

JVM虚拟机的深入浅出

仅当V的值等于E的值时,才会将V的值设为N,如果V的值和E的值不同,说明已经有其他线程做了更新,则当前线程什么都不做。总的来说,老年代的时间较新生代的时间会长,新生代的垃圾回收会更频繁,如果新生代的内存分配的更大,会减少频繁的回收,但是每次的回收时间又相对拉长。为避免直接内存溢出,在确保空间不浪费的基础上,合理执行显式GC可以降低直接内存溢出的概率,设置合理的-XX:MaxDirectMemorySize值也可以避免意外的内存溢出,而设置一个较小的堆在32位虚拟机上可以使得更多的内存用于直接内存。

大圈技术博客 1185
上一篇: jvm
下一篇: 虚拟机之内存管理之内存分配
蓝猫_虹
博客等级 码龄12年 49粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值