JVM相关内容

article/2025/7/16 19:02:21

jvm的跨平台,字节码的作用

jvm的跨平台

在这里插入图片描述
不同操作系统系统运行的JVM不一样,但度能够处理对应的字节码文件

字节码的作用

利用编译节省了运行的时候的效率
在这里插入图片描述
在这里插入图片描述

JVM整体结构

在这里插入图片描述
类加载子系统:用于加载不同的class(字节码)文件
解释器:方法区所存在的字节码指令
垃圾回收器:回收内存里的垃圾
JTT编译器:编译热点指令(不用每次都翻译,翻译一次缓存起来)

类加载子系统

类加载的过程:

(把class文件从磁盘中的class文件加载到方法区的内存当中)
加载—— 验证—— 准备 —— 解析 —— 初始化
加载 :磁盘读取
验证:验证class文件的准确性
准备:为static的属性变量分配内存并赋零值
解析:将符号引用解析为直接引用 (类里面应用类名,我们代码是根据包名类名识别(符号引用),此时我们要将其转换成直接指向类名地址(直接引用))
初始化:赋值是否制定了明确的值
在这里插入图片描述

类加载器分类

在这里插入图片描述
jdk默认提供的三个类加载器
BootStrapClassLoader:jre/lib
ExtClassLoader: jre/lib/ext
AppClassLoad: app应用的路径 (target/classes路径下的class类)

双亲委派机制

作用:避免类的重发加载,避免核心API被篡改
具体代码(暂放)
大概的原理:就是现会找到其的父类加载器判断是否有该类,有的话就父类加载器进行加载,没有的话就子类进行加载
在这里插入图片描述

Tomcat为什么要使用自定义加载器WebappClassLoader

为了进行类隔离
在这里插入图片描述

运行时数据区

在这里插入图片描述
代码栈执行的过程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序计数器

在这里插入图片描述

虚拟机栈(方法栈/java栈)

在这里插入图片描述在这里插入图片描述
栈帧
在这里插入图片描述
操作数栈
局部变量表
在这里插入图片描述
在这里插入图片描述

本地方法栈

native method:java定义的用c实现的方法
在这里插入图片描述

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

方法区(元空间)

垃圾回收机制

为什么要进行垃圾回收机制:
垃圾是指在IM中没有任何引用指向它的对象,如果不清理这些垃圾对象,那么它们就一直占用着内存,而不能给其他对象使用,最终垃圾对象越来越多,就会出现OOM了。
在这里插入图片描述

java对象在堆里的流转过程

垃圾回收算法

引用计数法

在这里插入图片描述

可达性分析法

在这里插入图片描述
GC ROOT包括
GC Roots是一组引用,包括

  • 线程中虚拟机栈中正在执行的方法中方法参数、局部变量所对应的对象引用
  • 线程中本地方法栈中正在执行的方法中方法参数、局部变量所对应的对象引用
  • 方法区中保存的类信息中静态属性所对应的对象引用
  • 方法区中保存的类信息中常量属性所对应的对象引用等等
标记-清除算法(对找到的垃圾进行处理)

在这里插入图片描述
优点:思路简单
缺点:效率不高,内存碎片

复制算法

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

标记-整理算法

在这里插入图片描述

总结

在这里插入图片描述

分代收集算法(理念)

在这里插入图片描述

常见的垃圾回收器

在这里插入图片描述


http://www.hkcw.cn/article/iWAxpPkMha.shtml

相关文章

Sqlite3数据库表内数据批量读取操作---sqlite3_stmt机制

0、引言 在前面两篇文章已经对数据环境搭建、数据批量写入库中进行了较为详细的讲解。因此,基于前两篇文章内容的基础上,本文主要从数据库中批量数据读取操作进行梳理讲解。 嵌入式数据库SQLite 3配置使用详细笔记教程_sqlite3-CSDN博客 SQLite 3 优化批…

官方指定Jmeter配置JVM堆内存方式

软件测试资料领取:[内部资源] 想拿年薪40W的软件测试人员,这份资料必须领取~ 软件测试面试刷题工具领取:软件测试面试刷题【800道面试题答案免费刷】 1.概述 在使用Jmeter做性能测试过程中,可能会应为默认设置的堆内存值较小出…

线上JVM OOM问题,如何排查和解决?

今天咱们来聊聊让无数 Java 开发者头疼的 JVM OOM(Out Of Memory,内存溢出)问题。在面试中,OOM 问题也是面试官的“心头好”,因为它能直接考察你对 JVM 的理解,以及你在实际问题面前的排查和解决能力。 一…

JVM常见线上问题:CPU 100%、内存泄露问题排查

一、CPU 100% 问题排查 1.1、找到 cpu 占有率最高的 java 进程号 使用命令: top -c 显示运行中的进程列表信息, shift + p 使列表按 cpu 使用率排序显示。 PID = 2227 的进程,cpu 使用率最高 1.2、根据进程号找到 cpu 占有率最高的线程号 使用命令: top -Hp {pid} ,同…

JVM 一文详解

目录 JVM 简介 JVM 中的内存区域划分 1. 堆(一个进程只有一份 ------ 线程共享) 2. 栈(一个进程可以有 N 份 ------ 线程私有) Java 虚拟机栈: 本机方法栈: 3. 程序计数器(一个线程可以…

【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)

前言 🌟🌟本期讲解关于HTTPS的重要的加密原理~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…

深入理解 JVM 的栈帧结构

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…

JVM 机制

目录 一、什么是 JVM: 二、JVM 的运行流程: 三、JVM 内存区域划分: 1、( 1 ) 程序计数器: 1、( 2 ) 元数据区: 1、( 3 ) 栈: 1、( 4 ) 堆: 四、类加载: 1、什么时候会触…

【JVM】类加载机制

文章目录 类加载机制类加载过程1. 加载2. 验证3. 准备4. 解析偏移量符号引用和直接引用 5. 初始化 类加载机制 类加载指的是,Java 进程运行的时候,需要把 .class 文件从硬盘读取到内存,并进行一些列的校验解析的过程(程序要想执行…

【JVM】从零开始深度解析JVM

本篇博客给大家带来的是JVM的知识点, 重点在类加载和垃圾回收机制上. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 …

一篇文章带你解决笔试面试中的jvm问题

JVM内存区域划分 JVM启动的时候,会申请到一整个很大的内存区域.JVM是一个应用程序,要从操作系统里申请内存.JVM就根据需要,把空间分为几个部分,每个部分各自有不同的功能.具体划分如下: 分为:栈,堆,程序计数器,元数据区 Heap(堆):…

通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎

引言 在智能化浪潮重塑软件开发范式的今天,我借助开发一个基于编程智能体开发Wiki 多功能搜索引擎,深度体验了通义灵码2.5这一阿里云旗舰级AI编码助手,构建智能协作新范式。 该平台通过三大技术突破赋能开发全流程:基于编程智能…

基于SpringBoot的商家销售管理网站的设计与实现

湖南软件职业技术大学 本科毕业设计(论文) 设计(论文)题目 基于SpringBoot的商家销售管理网站的设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕…

各种噪声电流激励下电源PDN网络对系统时钟性能的影响

点击上面“蓝字”关注我们 电源分配是支持所有类型硅产品运行的基础设施的重要组成部分,但在设计过程中常被忽视。电源质量可能限制电路性能,并决定其工作可靠性。要真正解决电源分配问题,必须考虑包括芯片、封装和PCB在内的整个系统。 芯片…

【大模型】情绪对话模型项目研发

一、使用框架: Qwen大模型后端Open-webui前端实现使用LLamaFactory的STF微调数据集,vllm后端部署, 二、框架安装 下载千问大模型 安装魔塔社区库文件 pip install modelscope Download.py 内容 from modelscope import snapshot_downlo…

关于位图Bitmaps的介绍

目录 1、基本概念 1.1、介绍 1.2、关键字 1.3、结构原理 2、常用命令 2.1、SETBIT 2.2、GETBIT 2.3、BITCOUNT 2.4、BITOP 2.5、BITPOS 3、应用场景 4、使用示例 前言 Redis的Bitmaps是一种基于字符串的数据结构,用于处理位级别的操作。 Bitmaps在Redis…

【软件设计】通过软件设计提高 Flash 的擦写次数

目录 0. 个人简介 && 授权须知1. Flash 和 EEROM 基本情况2. 场景要求3. 软件设计思路4. 代码展示4.1 flash.h4.2 flash.c 0. 个人简介 && 授权须知 📋 个人简介 💖 作者简介:大家好,我是喜欢记录零碎知识点的菜鸟…

C 语言练习--初级

#学习C 代码, 做小练习时,自己运行代码竟然发现很多错误,记录一下。 1、计算器 根据输入的数值和符合,输出相应结果。 结果: #include "stdio.h"int Primary_math(int a, int b, char sign){int num0;swit…

pikachu通关教程-CSRF XSS

XSS XSS漏洞原理 XSS被称为跨站脚本攻击(Cross Site Scripting),由于和层叠样式表(Cascading Style Sheets,CSS)重名,改为XSS。主要基于JavaScript语言进行恶意攻击,因为js非常灵活…

E. Melody 【CF1026 (Div. 2)】 (求欧拉路径之Hierholzer算法)

E. Melody 思路 将所有出现过的音量和音高看作一个点,一个声音看作一条边,连接起来。那么很容易知道要找的就是图上的一条欧拉路径(类似一笔画问题) 又已知存在欧拉路径的充要条件为:度数为奇数的点的个数为0或者2个…