文章 2022-12-11 来自:开发者社区

<JVM上篇:内存与垃圾回收篇>02-类加载子系统(下)

2.3.2. 用户自定义类加载器在 Java 的日常应用程序开发中,类的加载几乎是由上述 3 种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。 为什么要自定义类加载器?隔离加载类(比如项目中的中间件和使用到的框架,有可能会有相同的类路径也一样,可能出现冲突问题,需要类加载器进行冲裁.)修改类加载的方式(修改处理Bootstrap加载器外其他类加载器的使用方式,需....

<JVM上篇:内存与垃圾回收篇>02-类加载子系统(下)
文章 2022-12-11 来自:开发者社区

<JVM上篇:内存与垃圾回收篇>02-类加载子系统(上)

2. 类加载子系统2.1. 内存结构概述Class 文件类加载子系统运行时数据区方法区堆程序计数器虚拟机栈本地方法栈执行引擎本地方法接口本地方法库如果自己想手写一个 Java 虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎2.2. 类加载器与类的加载过程类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载 Class 文件,class 文件在文件开头有特定的文件标识。ClassLoad....

<JVM上篇:内存与垃圾回收篇>02-类加载子系统(上)
文章 2022-06-13 来自:开发者社区

JVM 从入门到精通(三)类加载子系统2

三、类加载器分类JVM支持两种类型的加载器,分别为 引导类加载器 C/C++实现(BootStrap ClassLoader)和 自定义类加载器 由Java实现从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是java虚拟机规范却没有这么定义,而是 将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。这里的四者之间的关系是包含关系。不是上层下层....

JVM 从入门到精通(三)类加载子系统2
文章 2022-06-13 来自:开发者社区

JVM 从入门到精通(三)类加载子系统1

文章目录一、内存结构概述二、类加载器和类的加载过程2.1 类加载子系统作用2.2 类加载器ClassLoader角色2.3 类的加载过程2.3.1 加载2.3.2 链接(即验证、准备、解析)2.3.3 初始化三、类加载器分类3.1 自定义类与核心类库的加载器3.2 虚拟机自带的加载器3.3 用户自定义加载器四、ClassLoader的常用方法及获取方法4.1 ClassLoader继承关系4.2....

JVM 从入门到精通(三)类加载子系统1
文章 2022-04-24 来自:开发者社区

JVM 类加载子系统与 SPI 详解

类加载器在Java虚拟机的角度来看,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分;另外一种就是其他所有 的类加载器,这些类加载器都由Java语言实现,独立存在于虚拟机外部,并且全都继承自抽象类 java.lang.ClassLoader。 类加载器结构如下图所示:1.启动类加载器启动类加载器(Bo....

JVM 类加载子系统与 SPI 详解
文章 2022-03-24 来自:开发者社区

JVM | 第2部分:虚拟机执行子系统《深入理解 Java 虚拟机》

前言参考资料:《深入理解 Java 虚拟机 - JVM 高级特性与最佳实践》第1部分主题为自动内存管理,以此延伸出 Java 内存区域与内存溢出、垃圾收集器与内存分配策略、参数配置与性能调优等相关内容;第2部分主题为虚拟机执行子系统,以此延伸出 class 类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎等相关内容;第3部分主题为程序编译与代码优化,以此延伸出程序前后端编译优化、前端易用性优化....

JVM | 第2部分:虚拟机执行子系统《深入理解 Java 虚拟机》
文章 2022-01-10 来自:开发者社区

JVM集合之类加载子系统

上篇文章中我们知道了JVM是个啥?这篇文章(通篇文章都是以HotSpot JVM为例)就让我们来了解一下类加载子系统(ClassLoader)--负责从文件系统或者网络中加载Class字节码文件,并将加载的类信息(DNA元数据模版,jvm会根据这个模版实例化出n个一模一样的实例)存放于“方法区”(接下来的文章中会做具体的介绍)中。ClassLoader只负责文件的加载,而文件是否可以运行,则由执....

JVM集合之类加载子系统
文章 2022-01-07 来自:开发者社区

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

⑨⑥. 谈谈你对G1中的Region的理解①. 使用G1收集器时,它将整个Java堆划分成约2048个大小相同的独立Region块,每个Region块大小根据堆空间的实际大小而定,整体被控制在1MB到32MB之间,且为2的N次幂,即1MB, 2MB, 4MB, 8MB, 1 6MB, 32MB。可以通过-XX:G1Hea pRegionSize设定。所有的Region大小相同,且在JVM生命周期....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(十五)
文章 2022-01-07 来自:开发者社区

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

⑨①. CMS优缺点①. 优点:并发收集、低延迟②. CMS的弊端:会产生内存碎片CMS收集器对CPU资源非常敏感(在并发阶段,它虽然不会导致用户停顿,但是会因为占用了一部分线程而导致应用程序变慢,总吞吐量会降低)CMS收集器无法处理浮动垃圾。可能出现"Concurrent Mode Failure" 失败而导致另一次Full GC的产生。在并发标记阶段由于程序的工作线程和垃圾收集线程是同时运行....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(十四)
文章 2022-01-07 来自:开发者社区

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

⑧③. 谈谈你对安全点的理解 ?①. 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为 “安全点(Safepoint)”②. Safe Point的选择很重要,如果太少可能导致GC等待的时间太长,如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短暂,通常会根据“是否具有让程序长时间执行的特征”为标准。比如:选择些执行时间较长的指令作为....

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

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Java开发者

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等