【JVM】内存区域划分、类加载机制(双亲委派模型图解)、垃圾回收(可达性分析、分代回收)

news2024/11/25 6:41:24

一、JVM简介

JVM (Java虚拟机) 是执行Java字节码的虚拟机。它是Java平台的核心,并且为Java代码提供了跨平台的能力。JVM 是一种虚拟的计算机,在其上运行的程序是Java字节码,它提供了Java代码在不同操作系统和硬件平台上执行的能力。JVM 将Java字节码解释成机器语言

二、内存区域划分

JVM本质是就是一个Java进程,会从操作系统申请一大块内存,给Java代码使用,这块内存进一步划分:

其中最核心的就是三个区域:
🚓(1)堆——new出来的对象(成员变量)
🚓(2)栈——维护方法之间的调用关系)(局部变量)
🚓(3)方法区/元数据区——放类加载后的类对象(静态变量)

具体又分成下面五部分:
在这里插入图片描述
注意:
🚍(1)虚拟机栈是给Java代码使用的,本地方法栈是给JVM的本地方法使用的
🚍(2)堆和元数据区在一个JVM进程中只有一份,栈和计数器则存在多份,每个线程都有一份
🚍(3)程序计数器记录当前程序执行到哪个指令了,用long类型存储了一个内存地址,这个内存地址就是下个要执行的字节码的地址

三、类加载

3.1 什么是类加载?

.class文件,加载到内存,得到类对象的过程就叫类加载

3.2 类加载的过程

在这里插入图片描述

🚑(1)加载

找到.class文件(双亲委派模型),并读取文件内容

🚑(2)验证

验证是连接阶段的第一步,这一阶段的目的是确保Class文件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求,保证这些信 息被当作代码运行后不会危害虚拟机自身的安全。

🚑(3)准备

给类对象分配内存空间(未初始化的类对象(包括静态变量)的内存空间都是0)

🚑(4)解析

Java 虚拟机将常量池内的符号引用替换为直接引用的过程,也就是初始化常量的过程。
在这里插入图片描述

🚑(5)初始化

初始化阶段,Java 虚拟机真正开始执行类中编写的 Java 程序代码,将主导权移交给应用程序。初始化阶段就是执行类构造器方法的过程。

3.3 加载过程中的“ 双亲委派模型 ”

首先明确,类加载的过程是由JVM中内置的类加载器完成的。

JVM中内置了三个类加载器:
(1)Bootstrap ClassLoader:负责加载Java标准库中的类
(2)Extension ClassLoader:负责加载一些非标准但是扩展的库的类
(3)Application ClassLoader:负责加载项目中自己写的类以及第三方库中的类

且上述类加载器存在如下关系:
(1)是(2)的父亲类加载器,(2)是(3)的父亲类加载器
在这里插入图片描述

3.4 非必要,不加载

不是JVM一启动就把所有的.class文件都加载了,只有“必要”时加载

“必要”:
🚲(1)创建了这个类的实例
🚲(2)使用了这个类的静态方法\静态属性
🚲(3)使用子类会触发父类的加载

四、垃圾回收

4.1 什么是垃圾回收?

垃圾回收称为GC(Garbage Collection),是一种帮助程序猿自动释放内存的技术

4.2 释放的区域

在JVM中垃圾回收所释放的空间是堆(栈和程序计数器都是随着线程一起销毁,而元数据区存储的是类对象,很少会卸载)

4.3 GC的两个阶段

🚕(1)找垃圾
🚕(2)释放垃圾

4.4 找垃圾

在这里插入图片描述

(1)引用计数

Test t = new Test();
Test t2 = t;

在这里插入图片描述
两个缺陷:
(1)浪费内存空间
(2)存在循环引用的情况

循环引用:
在这里插入图片描述

(2)可达性分析(JVM)

在这里插入图片描述
在这里插入图片描述

4.5 释放垃圾

(1)标记清除

在这里插入图片描述

(2)复制清除

在这里插入图片描述

(3)标记整理

在这里插入图片描述

(4)分代回收(JVM)

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

射频与微波综合测试仪-4958手持式微波综合测试仪

4958 微波综合测试仪 频率范围:1MHz~20GHz 4958手持式微波综合测试仪测量频率范围可达1MHz~20GHz,集电缆和天线驻波比测试、不连续点故障定位测试、插入损耗和增益测试、频谱分析、功率测量等多种功能于一体,携带方便&…

Unity中Shader纹理的多级渐远Mipmap

文章目录 前言一、什么是Mipmap二、Mipmap能带来什么好处1、增加缓存命中率,减少像素抖动感2、可配合质量设置来分级加载,减少不同配置下的内存 二、我们在Shader中实现一下该效果1、我们先布置一个简单的棋盘格,用于测试纹理的多级效果2、我…

【论文阅读】2736. 最大和查询-2023.11.17

题目: 2736. 最大和查询 给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 ,另给你一个下标从 1 开始的二维数组 queries ,其中 queries[i] [xi, yi] 。 对于第 i 个查询,在所有满足 nums1[j] > xi 且 nums2[j]…

陌陌附近人打招呼脚本,可自动回复消息,按键精灵开源脚本

用按键写的一个陌陌自动打招呼发送指定话术消息的一个脚本,它还会检测对方的消息,然后自动回复指定信息,下面是UI界面和代码,你可以直接粘贴到自己的按键精灵里面运行,不会出错,已经测试过。 UI界面&#…

vue中使用echarts实现省市地图绘制,根据数据显示不同区域颜色,点击省市切换,根据经纬度打点

一、实现效果 使用echarts实现省市地图绘制根据数据不同显示不同区域颜色实现省市地图点击切换效果实现地图上根据经纬度打点 二、实现方法 1、安装echarts插件 npm install echarts --save2、获取省市json数据 https://datav.aliyun.com/portal/school/atlas/area_select…

vue 表单重置功能

1、标签加上ref属性&#xff0c;名称自定义 <el-form ref"searchForm"></el-form>2、表单项标签添加prop属性&#xff0c;prop属性需要与input框绑定v-model的属性一致 <el-form-item label"名称" prop"name"><el-input …

大数据的技术运用:探索未来的无限可能性

随着科技的不断进步和社会信息的快速增长&#xff0c;大数据已成为一个热门话题。本文将探讨大数据技术在多个领域的应用&#xff0c;以及它对未来的影响和无限可能性。 导言 在过去的几十年里&#xff0c;大数据技术取得了惊人的发展&#xff0c;它不仅改变了企业的经营方式&a…

ArcGIS Maps SDK for JS:监听图层的visible属性

文章目录 1 问题描述2 解决方案3 拓展 1 问题描述 近期有这么一个需求。在 ArcGIS Maps SDK for JavaScript 中&#xff0c;使用图层的visible属性同步显示某个组件&#xff0c;即打开图层时显示组件&#xff0c;关闭图层时隐藏组件。 首先想到的是&#xff0c;通过点击图层列…

走进ERP管理系统:企业信息化的加速器

走进ERP管理系统&#xff1a;企业信息化的加速器 企业信息化已成为企业提高效率、降低成本、优化资源配置的重要手段。ERP管理系统作为企业信息化的重要组成部分&#xff0c;已经成为了越来越多企业的必备工具。本文将带您走进ERP管理系统&#xff0c;探讨其优势、应用场景以及…

蓝桥杯 大小写转换

islower/isupper函数 islower和issupper是C标准库中的字符分类函数&#xff0c;用于检查一个字符是否为小写字母或大写字母 需要头文件< cctype>,也可用万能头包含 函数的返回值为bool类型 char ch1A; char ch2b; //使用islower函数判断字符是否为小写字母 if(islower(…

揭示高防CDN的局限性与探讨其小众化原因

在网络安全领域&#xff0c;高防CDN&#xff08;高防御内容分发网络&#xff09;被认为是保护网站免受恶意攻击的强大工具&#xff0c;然而&#xff0c;尽管其在防护方面表现卓越&#xff0c;高防CDN在广泛应用中仍然相对小众。本文将从高防CDN的局限性出发&#xff0c;深入探讨…

仅需三行代码! C# 快速实现PDF转PPT

一般在会议、教学或培训活动中&#xff0c;我们都会选择PPT文档来进行内容展示。与PDF文档相比&#xff0c;PPT文档具有较强的可编辑性&#xff0c;可以随时增删元素&#xff0c;并且还可以设置丰富多样的动画效果来吸引观众注意。那么如何通过C#将PDF文档转为PPT文档呢&#x…

Looker Studio | 带来强大的探索、更新鲜的数据和更快的过滤

【信息来源 Google Cloud。Cloud Ace 是 Google Cloud 全球战略合作伙伴。】 Looker Studio 支持对临时数据进行自助分析&#xff0c;并与 Looker 一起为每月访问 Looker 系列产品的超过 1000 万用户做出贡献。今天&#xff0c;谷歌云为分析师推出新方法&#xff0c;为业务用户…

spark的资源调度与任务调度

blockManager 资源调度与任务调度

有什么好用的后勤管理软件?学校后勤服务要怎么提升满意度?

后勤服务是院校管理中的重要一环&#xff0c;直接影响到师生的工作、学习和生活质量。师生作为学校的核心用户&#xff0c;对后勤服务的质量和满意度有着深刻的体验和感受。因此&#xff0c;他们的评价对于提升学校品牌形象、提高服务质量以及改进学校管理具有至关重要的作用。…

Java 中的全部锁

目录 一. 前言 二. 乐观锁 VS 悲观锁 三. 自旋锁 VS 适应性自旋锁 四. 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁 五. 公平锁 VS 非公平锁 六. 可重入锁 VS 非可重入锁 七. 独享锁&#xff08;排他锁&#xff09; VS 共享锁 八. 总结 一. 前言 Java提供了种类丰富的锁&a…

工业镜头中的普通(FA)工业镜头特点

普通&#xff08;FA&#xff09;工业镜头特点 焦距大小的影响情况&#xff1a; 焦距越小&#xff0c;景深越大&#xff1b; 焦距越小&#xff0c;畸变越大&#xff1b; 焦距越小&#xff0c;渐晕现象越严重&#xff0c;使像差边缘的照度降低。 光圈大小的影响情况&#xff1a;…

【技术分享】EIGRP stub实验

【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等https://xmws-it.blog.csdn.net/article/details/117297837?spm1001.2014.3001.5502【微/信/公/众/号&#xff1a;厦门微思网络】 拓扑图&#xff1a; R1配置&#xff1a; route…

易点易动固定资产管理系统场景应用一:集成ERP/财务系统

在企业的日常运营中&#xff0c;固定资产管理是一个重要而繁琐的任务。传统的手工管理方式往往效率低下且容易出错&#xff0c;给企业带来不必要的成本和风险。为了解决这一问题&#xff0c;易点易动固定资产管理系统应运而生。本文将重点介绍易点易动固定资产管理系统在集成ER…

别再吐槽大学教材了,来看看这些网友强推的数学神作!

前言 关于大学数学教材的吐槽似乎从来没停止过。有人慨叹&#xff1a;数学教材晦涩难懂。错&#xff01;难懂&#xff0c;起码还可以读懂。数学教材你根本读不懂&#xff1b;也有人说&#xff1a;数学教材简直就是天书。 数学教材有好有坏&#xff0c;这话不假&#xff0c;但更…