java重点学习-JVM类加载器+垃圾回收

news2024/9/23 13:18:13

12.7类加载器

JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而让Java程序能够启动起来。

类加载器有哪些

  • 启动类加载器(BootStrap ClassLoader):加载JAVA HOME/jre/lib目录下的库
  • 扩展类加载器(ExtClassLoader):主要加载JAVA HOME/jre/lib/ext目录中的类
  • 应用类加载器(AppClassLoader):用于加载classPath下的类
  • 自定义类加载器(CustomizeClassLoader):自定义类继承ClassLoader,实现自定义类加载规则。使用的少

1.什么是双亲委派模型?

加载某一个类,先委托上一级的加载器进行加载,如果上级加载器也有上级,则会继续向上委托,如果该类委托上级没有被加载,子加载器尝试加载该类

2.JVM为什么采用双亲委派机制?
  • 通过双亲委派机制可以避免某一个类被重复加载,当父类已经加载后则无需重复加载,保证唯一性。
  • 为了安全,保证类库API不会被修改

12.8类加载的执行流程

类从加载到虚拟机中开始,直到卸载为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解析这三个部分统称为连接(linking)

  • 加载:查找和导入class文件
  • 验证:保证加载类的准确性
  • 准备:为类变量分配内存并设置类变量初始值
  • 解析:把类中的符号引用转换为直接引用
  • 初始化:对类的静态变量,静态代码块执行初始化操作
  • 使用:JVM 开始从入口方法开始执行用户的程序代码
  • 卸载:当用户程序代码执行完毕后,JVM便开始销毁创建的Class对象

验证

准备

解析

初始化

使用

12.9 对象什么时候可以被垃圾器回收

如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾如果定位了垃圾,则有可能会被垃圾回收器回收

定位垃圾的方式有两种

  • 引用计数法
  • 可达性分析算法

12.10 JVM垃圾回收算法有哪些

使用少 老年代 年轻代

  • 标记清除算法:垃圾回收分为2个阶段,分别是标记和清除,效率高,有磁盘碎片,内存不连续使用少
  • 标记整理算法:标记清除算法一样,将存活对象都向内存另一端移动,然后清理边界以外的垃圾,无碎片,对象需要移动,效率低。 老年代
  • 复制算法:将原有的内存空间一分为二,每次只用其中的一块,正在使用的对象复制到另一个内存空间中,然后将该内存空间清空,交换两个内存的角色,完成垃圾的回收:无碎片,内存使用率低。年轻代

标记清除算法,是将垃圾回收分为2个阶段,分别是标记和清除

  • 1.根据可达性分析算法得出的垃圾进行标记
  • 2.对这些标记为可回收的内容进行垃圾回收

12.11 说一下JVM中的分代回收

一、堆的区域划分

  • 1.堆被分为了两份:新生代和老年代【1:2】
  • 2.对于新生代,内部又被分为了三个区域。Eden区,幸存者区survivor(分成from和to)【8:1:1】

二、对象回收分代回收策略

  • 1.新创建的对象,都会先分配到eden区
  • 2.当伊甸园内存不足,标记伊甸园与 from(现阶段没有)的存活对象
  • 3.将存活对象采用复制算法复制到to中,复制完毕后,伊甸园和from 内存都得到释放
  • 4.经过一段时间后伊甸园的内存又出现不足,标记eden区域to区存活的对象,将其复制到from区
  • 5.当幸存区对象熬过几次回收(最多15次),晋升到老年代(幸存区内存不足或大对象会提前晋升)

三、MinorGC、Mixed Gc、FullGC的区别是什么

  • MinorGC【young GC】发生在新生代的垃圾回收,暂停时间短(STW)
  • Mixed GC 新生代+老年代部分区域的垃圾回收,G1 收集器特有
  • FullGC:新生代+老年代完整垃圾回收,暂停时间长(STW),应力避免

12.12 说一下 JM 有哪些垃圾回收器?

在jvm中,实现了多种垃圾收集器,包括:

  • 串行垃圾收集器:Serial GC、Serial OldGC
  • 并行垃圾收集器:Parallel Old GC、ParNew GC
  • CMS(并发)垃圾收集器:CMS GC,作用在老年代
  • G1垃圾收集器,作用在新生代和老年代

12.13 G1垃圾回收期

12.14 强引用、软引用、弱引用、虚引用的区别

  • 强引用:只要所有 GC Roots 能找到,就不会被回收
  • 软引用:需要配合SoftReference使用,当垃圾多次回收,内存依然不够的时候会回收软引用对象
  • 弱引用:需要配合WeakReference使用,只要进行了垃圾回收,就会把弱引用对象回收
  • 虚引用:必须配合引用队列使用,被引用对象回收时,会将虚引用入队由 Reference Handler 线程调用虚引用相关方法释放直接内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tensorflow—第五讲卷积神经网络

本讲概述 卷积实际上就是特征提取。本讲我们先了解学习卷积神经网络基础知识,再一步步地学习搭建卷积神经网络,最后会运用卷积神经网络对cifar10 数据集分类。在本讲的最后附上几个经典卷积神经网络:LeNet、AlexNet、VGGNet、InceptionNet和…

开发小程序

由于之前购入的阿里云ECS放着落灰,碰巧又看到个有趣的项目,于是就做了个生成头像的小程序…由于第一次完整发布小程序,记录一下遇到的问题 小程序名称:靓仔创意头像 😂 关于小程序 接口请求,在开发过程中…

少儿编程小游戏 | Scratch 射击游戏《开枪!》

在线玩:Scratch射击游戏 : “开枪!” 免费下载-小虎鲸Scratch资源站 随着科技的飞速发展,编程已经成为孩子们未来必备的技能之一。而Scratch作为一款专为少儿设计的编程工具,通过可视化的编程方式,让孩子们在玩游戏的过…

JAVA-集合相关

HashMap如何解决哈希冲突的? 计算hash值,基于hashCode计算冲突之后,先是使用链式寻址法当链表长度大于8,且hash表的容量大于60的时候,再添加元素则转化成红黑树 为什么计算hash值是,是将hash地址的值右移1…

代码随想录训练营 Day62打卡 图论part11 Floyd 算法 A * 算法

代码随想录训练营 Day62打卡 图论part11 Floyd 算法 例题:卡码97. 小明逛公园 题目描述 小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力,走最短…

C++速通LeetCode中等第3题-字母异位词分组

双指针法:两个指针分别指向左右边界,记录最大面积,由于面积由短板决定,两个指针中较短的短指针向内移动一格,再次记录最大面积, 直到两指针相遇,得出答案。 class Solution { public:int maxAr…

PyQt / PySide + Pywin32 + ctypes 自定义标题栏窗口 + 完全还原 Windows 原生窗口边框特效项目

项目地址: GitHub - github201014/PyQt-NativeWindow: A class of window include nativeEvent, use PySide or PyQt and Pywin32 and ctypesA class of window include nativeEvent, use PySide or PyQt and Pywin32 and ctypes - github201014/PyQt-NativeWindow…

切换淘宝最新npm镜像源

文章目录 一、前言二、切换淘宝最新npm镜像源2.1 查询最新镜像源2.2 两种方式切换npm镜像源2.2.1 通过npm配置2.2.1 通过cnpm配置 三、总结 一、前言 NPM(Node Package Manager),是NodeJs的模块依赖管理工具,用于nodejs模块的安装…

java多线程模拟多个售票员从同一个票池售票

程序功能 这段代码模拟了多个售票员从一个有限的票池中售票的过程。主要功能如下: 票池共有50张票,多个售票员(线程)并发进行售票。 使用同步机制确保线程安全,避免多个售票员同时出售同一张票。 每个售票员不断检查票…

5.内容创作的未来:ChatGPT如何辅助写作(5/10)

引言 在信息爆炸的时代,内容创作已成为连接品牌与受众、传递信息与知识、以及塑造文化与观念的重要手段。随着数字媒体的兴起,内容创作的需求日益增长,对创作者的写作速度和质量提出了更高的要求。人工智能(AI)技术的…

PHP全程可视化防伪溯源一体化管理系统小程序源码

全程可视化,防伪溯源新篇章 —— 揭秘一体化管理系统的力量 🔍 开篇:透视未来,从源头到终端的安心之旅 在这个信息透明化时代,每一件商品都承载着消费者的信任与期待。而“全程可视化防伪溯源一体化管理系统”&#x…

【网络安全 | 代码审计】PHP无参数RCE

未经许可,不得转载。 文章目录 无参数RCE代码审计1、利用Session ID实现无参数RCE2、利用get_defined_vars ()函数实现无参数RCE3、利用getallheaders()实现无参数RCE4、利用getenv()实现无参数RCE5、利用scandir()实现无参数RCE靶场实例无参数RCE 一般情况下,RCE需要通过传…

Nuxt3部署遇到的问题归纳

fetch Headers is not a constructor 和 _fetch is not a function 这两个问题,本质上都是fetch在服务器上无法正常使用的问题,需要检查本地node版本与线上服务器node版本是否一致。否则在依赖安装上会产生依赖版本差异导致应用无法正常运行。 以下是wi…

若依-原理

1.代码生成器 1.1源码分析 代码生成器分为两个部分: 第一部分涉及将业务表结构导入到系统中 第二部分是点击生成按钮,系统将根据表结构生成相应的前后端代码,并提供下载。 1.表结构说明 gen_table:存储业务表的基本信息 &am…

事件循环event loop入门(基于ESP-IDF)

主要参考资料: 事件循环库: https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/system/esp_event.html Event Loop 大白话版: https://www.bilibili.com/video/BV1FD4y1j79J/?spm_id_from333.999.0.0&vd_sourcedd284033cd0c4d1f3…

盘点常见网络安全术语(建议收藏)

1、黑帽 为非法目的进行黑客攻击的人,通常是为了经济利益。他们进入安全网络以销毁,赎回,修改或窃取数据,或使网络无法用于授权用户。这个名字来源于这样一个事实:老式的黑白西部电影中的恶棍很容易被电影观众识别&…

在linux用docker部署MySQL失败

Unable to find image mysql:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 128.121.243.107:443: i/o timeout. See docker run --help. 从网上找解决问题一直说是镜像问题,我原来的镜像是从自…

8-----手机机型维修工具助手 功能较全 涵盖解锁 刷机 修复等选项 维修推荐

上图是一款功能较全的维修加密狗。目前可以无限制 任何人使用。看图片可以了解其中涵盖刷机 解锁 修复分区 查看短接图 安装驱动 修复基带等等选项。而且其中有针对各个机型型号的对应功能操作。以及一些rec5.0相关的操作选项。 通过此博文了解 ★★★★★此工具涵盖的一些…

优秀项目经理需必备的四个项目管理最佳技术

项目经理在项目管理过程中,需要具备多种管理思维以确保项目的顺利进行和成功交付。项目经理要有效地管理好项目,确保项目按时、按质、按预算完成,需要特别关注以下四个方面: 1. 明确项目目标与范围 设定清晰目标:与项目…

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)557: T456507 图像旋转

题目内容 输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。 输入格式 第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。 接下来 n 行,每行 m 个整数,表示图像的每个像…