深入了解一波JVM内存模型

news/2025/9/25 18:29:12/文章来源:https://www.cnblogs.com/randolf/p/19111738

深入了解一波JVM内存模型

JDK体系结构与跨平台特性介绍

image-20250924182234479

通过官方的结构图看出,JVM提供底层的平台支持,JRE提供运行环境所必须的类,在这个基础上去跑我们的java程序。JVM为我们屏蔽了操作系统的差异性,使java程序得以跨平台执行。

image-20250924182742292

JVM内存模型深度剖析

image-20250925093257668

梳理一下过程

  1. 类加载子系统将类加进来
  2. 验证字节码是否是否符合规范
  3. 准备阶段:为静态变量赋初值
  4. 解析阶段:符号引用(类名、方法名等)转换为直接引用(内存地址--》静态链接)
  5. 初始化阶段:给静态变量赋予指定的值,执行静态代码块,初始化父类等
  6. 线程调用具体方法

线程调用方法过程

  1. 线程栈是先入后出的(FILO),后调用的方法执行完才会返回执行前面的方法
  2. 线程栈内部:
    1. 局部表量表存入具体的变量(a、b、c等)
    2. 操作数栈执行具体的计算(10+20,非a+b)
    3. 动态链接指向常量池(元空间),符号引用--》内存地址(方法调用)
    4. 由方法出口跳转到后面的方法栈
  3. 程序执行过程中,由程序计数器记录线程执行到哪了
  4. 执行引擎一边执行,一边记录着当前执行的位置

一些空间结构

  1. 线程栈、本地方法栈、程序计数器都是线程独有的,独占的
  2. 堆、元空间,属于大家共有的空间
  3. 堆中包含所有对象,包括class字节码对象
  4. 元空间包含常量池、静态变量、类元信息(类似C语言结构体,并非字符串之类的)
  5. 元空间占用的是直接物理内存,不做限制可能撑爆整个内存空间

元空间核心 JVM 参数

image-20250925104201575

Spring Boot程序的JVM参数设置格式(Tomcat启动直接加在bin目录下catalina.sh文件里):

-XX:MetaspaceSize=256M  # 元空间触发Full GC的初始阈值
-XX:MaxMetaspaceSize=256M  # 元空间的最大容量限制
  1. -XX:MetaspaceSize
    • 作用:设置元空间触发 Full GC 的初始阈值(元空间无固定初始大小)。
    • 默认值:约 21M。当元空间使用量达到此值时,会触发 Full GC 并卸载无用类,同时 JVM 会根据 GC 释放的空间动态调整该阈值(不超过MaxMetaspaceSize)。
  2. -XX:MaxMetaspaceSize
    • 作用:限制元空间的最大容量。
    • 默认值:-1(不限制,仅受本地内存大小约束)。
  3. 最佳实践
    • 建议将两个参数设置为相同值(如 256M),避免 JVM 动态调整元空间大小时频繁触发 Full GC(Full GC 成本高)。
    • 对于 8G 物理内存的机器,256M 是较合理的初始配置,可根据应用实际类加载情况(如大量动态生成类)适当调大。
java -Xms2048M -Xmx2048M -Xmn1024M -Xss512K \-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M \-jar microservice-eureka-server.jar

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

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

相关文章

完整教程:K230基础-PWM控制介绍及应用

完整教程:K230基础-PWM控制介绍及应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

什么是UDFScript用户自定义脚本

本文分享自天翼云开发者社区《什么是UDFScript用户自定义脚本》.作者:郭****迎 UDFScript介绍 用户自定义脚本(User Defined Script,简称UDFScript)是一个可供您快速实现CDN定制化配置的工具箱,当CDN的标准配置无…

高端网站设计中的微交互:细节如何决定用户体验

高端网站设计中的微交互:细节如何决定用户体验在高端网站设计的语境下,“视觉审美”已经不再是唯一的竞争点。真正能打动用户、建立长期信任的,是那些嵌入在每一次操作、点击、过渡中的细节优化。微交互(Microinte…

合肥建设干部学校网站首页凡科 做网站

[原创]好买财富接口测试自动化实践

安徽建设工程信息网站广西建设工程协会网站

项目hbase数据库出现很诡异的assignment ,region移动的src和dest都是同一台regionserver,不过时间戳不同,启动的只有一个regionserver, 不知道怎么出现了两个时间戳 分析下源码解决一下 loadbalance只有一个实现 org.apache.hado…

软件开发公司如何通过 UI 设计服务打造差异化竞争力

软件开发公司如何通过 UI 设计服务打造差异化竞争力在数字化浪潮推动下,软件开发行业的竞争越来越激烈。功能上的差异化正逐渐缩小,技术壁垒也因开源生态与低代码平台而降低。在这种背景下,UI设计服务逐渐成为软件开…

CCPC2024-Zhengzhou G Same Sum(线段树)

CCPC2024-Zhengzhou G Same Sum 给一个序列。两种操作:区间加;查询一个偶数长区间,其中的值是否可以两两配对得到和相等。首先知道区间内的值两两配对得到的相等的和值为区间的平均数 m 。 可以转化为,这个区间的值…

短剧小程序开发全攻略:从技术选型到核心实现(前端+后端+运营干货) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Openwrt-DDNS 配置详解

在家庭或小型办公网络环境中,我们通常使用的是动态IP地址,这意味着每次重新连接互联网时,ISP可能会分配一个新的IP地址。这对于需要远程访问家庭网络中的设备(如NAS、监控摄像头或自建服务器)的用户来说是个问题。…

实用指南:Metal - 2. 3D 模型深度解析

实用指南:Metal - 2. 3D 模型深度解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

【2025.9.16】关于举办PostgreSQL数据库管理人才研修与评测班的通知

证书实图考核通过后,由工信部人才交流中心颁发证书,并纳入工信人才数据库 报名方式工信部人才交流中心组织的PostgreSQL认证,从2021起已经运营四年多时间,且获得行业高度认可,人大金仓、金蝶集团、迪思杰、用友、…

Java锁相关问题

1.Java中有那些锁,区别是什么 1.java中的锁主要分为乐观锁和悲观锁,其中CAS是乐观锁,synchronized、Lock是悲观锁。2.乐观锁认为我在操作的时候不会有其余的线程竞争,如果有竞争就自旋等待(CAS)或异常结束(数据…

CDN中使用边缘函数实现自定义编程

本文分享自天翼云开发者社区《CDN中使用边缘函数实现自定义编程》.作者:郭****迎 为什么选择边缘函数千人千面,个性化定制,源站计算成本高: 企业网站为了提升用户转化率,往往需要在源站服务器根据用户历史数据,计…

第一次课程中的所有动手动脑的问题以及课后实验性的问题

第一次课程中的所有动手动脑的问题以及课后实验性的问题 (我将其以压缩包的形式上传到了博客的文件中) https://files.cnblogs.com/files/blogs/848082/第一次课程.zip?t=1758794756&download=true (一)枚举类…

敏捷开发的几个阶段

目录阶段1:认知启蒙期(入门)——“知道敏捷是什么”阶段特征:阶段2:实践落地期(初级)——“能用敏捷做项目”阶段特征:阶段3:问题优化期(中级)——“能解决敏捷中的坑”阶段特征:阶段4:体系化期(高级)—…

公司网站开发怎么做账wordpress更新网站内容

python脚本查找文件是否存在的方法:1、使用os模块os模块中的os.path.exists()方法用于检验文件是否存在。判断文件是否存在import osos.path.exists(test_file.txt)#Trueos.path.exists(no_exist_file.txt)#False2、使用Try语句可以在程序中直接使用open()方法来检查…

网站建设一年600js做的网站

java微服务面试题 Q:为什么要用微服务?微服务有哪些优势? 单体应用把所有功能都堆放在一起,改动影响大,风险高。 微服务具有以下优势: 针对特定服务发布,影响小,风险小,成本低。 频…

青岛seo网站建设公司软件网页制作

面向对象编程特征:抽象化,讲究对象,集成,封装,多态。 类:一类事物,苹果,梨,香蕉都是水果,都是一类。 类的特征:构造函数,字段属性和方…

实战:基于 BRPC+Etcd 打造轻量级 RPC 服务 —— 从注册到调用的完整实现 - 教程

实战:基于 BRPC+Etcd 打造轻量级 RPC 服务 —— 从注册到调用的完整实现 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-…

【2025最新】ArcGIS 点聚合功能实现全教程(进阶版) - 实践

【2025最新】ArcGIS 点聚合功能实现全教程(进阶版) - 实践2025-09-25 18:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…