JVM 内存介绍

news2024/12/24 9:12:54
本文主要介绍: JVM 内存分哪几个区,每个区的作用是什么
备注:
橙色:堆 和 方法区 ,属于jvm公有部分,可以进行调优
灰色:java栈,本地方法栈和计数器 属于jvm的私有部分,不可进行调优

一个对象从创建到被回收的过程是怎样的?

Personp=new Person() 100个对象
第一步:
        100个对象创建之后,会存储到新生代中的伊甸园区
第二步:
        经过一轮GC后,绝大多数的对象会被回收,仅剩下5个对象存活
第三步:
        再创建100个对象+5=105对象
        又经过第二轮gc之后,仍有5个存活,其中有2个是上一轮留下的
第四步:
        经过15轮gc 后仍然存活的对象 会存入到养老区。
第五步:
        养老区中也会进行GC,一旦养老代gc速度赶不上对象的产生速度了,就会OOM,出现jvm挂机

类是如何加载进内存中?

核心是需要classLoader
会涉及双亲委派机制所以分类自上而下的去罗列
Bootstrap ClassLoader根加载器 rt.jar
Extension ClassLoader扩展类加载器
Application ClassLoader 应用类加载器
用户自定义类加载器如果
自定义String

总结过程:

        三大步 :加载---->连接---->初始化
        七小步 :加载---->验证---->准备---->解析---->初始化---->使用---->卸载
        加载:将class文件加载到内存中
        验证:验证字节码文件的正确性
        准备:为类的静态变量分配内存空间并赋予初始值
        解析:类加载器加载类所需的其他类
        初始化:为类以及变量赋予真正的值
        使用:类的调用
        卸载:类的垃圾回收

java 虚拟机主要分为以下几个区

1. 方法区 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生
GC,在这里进行的 GC 主要是对方法区里的常量池和对类型的卸载
2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译
器编译后的代码等数据。
3. 该区域是被线程共享的。
4. 方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。
该常量池具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也
会存在这个常量池中。
2. 虚拟机栈
1. 虚拟机栈也就是我们平常所称的栈内存,它为 java 方法服务,每个方法在执行
的时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出口
等信息。
2. 虚拟机栈是线程私有的,它的生命周期与线程相同。
3. 局部变量表里存储的是基本数据类型、returnAddress 类型(指向一条字节码
指令的地址)和对象引用,这个对象引用有可能是指向对象起始地址的一个指针,
也有可能是代表对象的句柄或者与对象相关联的位置。局部变量所需的内存空间在
编译器间确定
4. 操作数栈的作用主要用来存储运算结果以及运算的操作数,它不同于局部变量
表通过索引来访问,而是压栈和出栈的方式
5. 每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引
用是为了支持方法调用过程中的动态连接.动态链接就是将常量池中的符号引用在
运行期转化为直接引用。
3. 本地方法栈 本地方法栈和虚拟机栈类似,只不过本地方法栈为 Native 方法服务。
4.
java 堆是所有线程所共享的一块内存,在虚拟机启动时创建,几乎所有的对象实
例都在这里创建,因此该区域经常发生垃圾回收操作。
5. 程序计数器:
内存空间小,字节码解释器工作时通过改变这个计数值可以选取下一条需要执行的
字节码指令,分支、循环、跳转、异常处理和线程恢复等功能都需要依赖这个计数
器完成。该内存区域是唯一一个 java 虚拟机规范没有规定任何 OOM 情况的区
域。
https://openjdk.org/jeps/122   介绍 静态变量、字符串常量从永久代移动到堆中

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

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

相关文章

永磁同步电机高性能控制算法(14)—— 有源阻尼电流环

1.前言 在之前的之后中已经发过一篇复矢量电流环和我们平时用的比较多的前馈补偿的电流环的对比,感觉复矢量电流环的效果还是挺明显的。 https://zhuanlan.zhihu.com/p/682880365https://zhuanlan.zhihu.com/p/682880365 当时在看文献的时候,复矢量电…

itextpdf字体选择

itextpdf 版本7.2.5 itextpdf-html2pdf 版本4.0.5 这里讲的是通过html转pdf,在html2pdf中是通过html中font-family样式来确定字体的,那已知font-family的情况,怎么确定pdf中实际用的字体,大致分为两步: 1、通过font…

SpringBoot系列:通过AOP+注解优雅实现操作日志记录

文章目录 前言一、简介1.1 操作日志在企业应用中的重要性1.2 使用AOP和注解实现操作日志记录的好处 二、开发环境三、准备工作3.1 创建操作日志记录表3.2 创建系统日志实体类 四、代码实现4.1 创建业务枚举类4.2 创建日志注解4.3 创建操作状态枚举类4.4 创建IP工具类4.5 创建切…

Linux驱动开发-04LED灯驱动实验(直接操作寄存器)

一、Linux 下LED 灯驱动原理 Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器。驱动访问底层的硬件除了使用内存映射将物理地址空间转化为虚拟地址空间,去进行读写修改,还可以通过各种子系统函数去进行操作 1.1 地址映射 MMU 全称…

WebSocket实现群聊功能、房间隔离

引用WebSocket相关依赖 <dependency><groupId>javax.websocket</groupId><artifactId>javax.websocket-api</artifactId><version>1.1</version></dependency><dependency><groupId>org.springframework</grou…

Golang | Leetcode Golang题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; func lowestCommonAncestor(root, p, q *TreeNode) (ancestor *TreeNode) {ancestor rootfor {if p.Val < ancestor.Val && q.Val < ancestor.Val {ancestor ancestor.Left} else if p.Val > ancestor.Val && q…

【区块链 + 智慧政务】基于区块链的可信数据档案管理系统 | FISCO BCOS应用案例

目前&#xff0c;我国的档案管理整体上实行“电子化”和“纸质”同步并存的“双套制”管理体系&#xff0c;这套管理规范体系在一 定程度上满足了电子文件安全存储的要求。但是随着云计算、大数据、区块链等现代信息技术的快速发展&#xff0c;以及 全国“互联网 政务服务”工…

TG创建小程序交互APP登录以及机器人信息

1、搜索 BotFather &#xff0c;输入命令 /newbot 创建机器人。 2、修改机器人信息 /mybots 编辑名称 : 修改机器人名称 编辑关于: 修改关于 hayden yyds&#xff0c;修改以后打开机器人会出现在下图 编辑描述 : 机器人的描述 编辑描述图片 : 机器人的图片 编辑 Botpic…

让前端和后端要“动手”的7大行为,你中了几个。

前后端分离导致了二者在工作中交叉非常多&#xff0c;不像之前前端搞完静态页面&#xff0c;拽给后端就行了。 这种交叉必然导致巨大的沟通成本&#xff0c;贝格前端工场将项目踩过的坑&#xff0c;给大家分享一下。 前端工程师最讨厌的后端行为包括&#xff1a; 1. 不提供清…

高端的食材,往往只需要最简单的烹饪!ORB,仅此一招,Alpha达到年化36%

常常看到有人提问&#xff0c;如何挖掘因子和策略&#xff1f;ORB 策略的改进历史能给我们许多启发。一是一个策略值得研究数十年&#xff1b;二是温故而知新是永远的法宝。沉下心来&#xff0c;真正吃透 IT 系统、吃透数据和已有策略&#xff0c;比追风要好得多。 炒股要炒大…

备考美国数学竞赛AMC10:吃透1200道历年真题和知识点(持续)

距离2024年AMC10美国数学竞赛开赛预计还有3个多月的时间&#xff0c;实践证明&#xff0c;做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c…

[AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性

目录 背景描述 用浏览器访问&#xff0c;正常返回 ​编辑 AHK v2官方示例源代码 AHK v2运行结果报错(0x80092004) 找不到对象或属性 用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性 附&#xff1a; 用Apifox访问&#xff0c;也正常返回 AHK v1 …

怎样优化 PostgreSQL 中对复杂查询的并行执行计划?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样优化 PostgreSQL 中对复杂查询的并行执行计划一、了解并行执行计划的基础知识二、优化并行执行计划…

MySQL索引特性(上)

目录 索引的重要 案例 认识磁盘 MySQL与存储 先来研究一下磁盘 扇区 定位扇区 结论 磁盘随机访问与连续访问 MySQL与磁盘交互基本单位 建立共识 索引的理解 建立测试表 插入多条记录 局部性原理 所有的MySQL的操作(增删查改)全部都是在MySQL当中的内存中进行的&am…

基于AT89C51单片机GSM模块的家庭防火防盗报警系统设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机GSM模块的家庭防火防盗报警系统设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 摘 要 原理图 仿真图 元器件清单 代码 系统论文 参考文献 资源下载…

内衣专用洗衣机怎么样?五样超卓臻品专业推荐!

在日常生活中&#xff0c;内衣洗衣机已成为现代家庭必备的重要家电之一。选择一款耐用、质量优秀的内衣洗衣机&#xff0c;不仅可以减少洗衣负担&#xff0c;还能提供高效的洗涤效果。然而&#xff0c;市场上众多内衣洗衣机品牌琳琅满目&#xff0c;让我们往往难以选择。那么&a…

【Python】Selenium怎么切换浏览器的页面

我们在爬网使用Selenium进行测试的时候&#xff0c;有时候想要点击浏览器里面的网址&#xff0c;跳到另一个页面上&#xff0c;获取第二个页面的内容。 可是有时候从官网进去&#xff0c;点击跳转到下一个页面以后&#xff0c;却没法定位到下一个页面的元素&#xff0c;这时候就…

【JVM基础01】——介绍-初识JVM运行流程

目录 1- 引言&#xff1a;初识JVM1-1 JVM是什么&#xff1f;(What)1-1-1 概念1-1-2 优点 1-2 为什么学习JVM?(Why) 2- 核心&#xff1a;JVM工作的原理&#xff08;How&#xff09;⭐2-1 JVM 的组成部分及工作流程2-2 学习侧重点 3- 小结(知识点大纲)&#xff1a;3-1 JVM 组成3…

Ubuntu 22.04.4 LTS (linux) 安装certbot 免费ssl证书申请 letsencrypt

1 安装certbot sudo apt update sudo apt-get install certbot 2 申请letsencrypt证书 sudo certbot certonly --webroot -w 网站目录 -d daloradius.域名.com 3 修改nginx 配置ssl 证书 # 配置服务器证书 ssl_certificate /etc/letsencrypt/live/daloradius.域名.com/f…

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一&#xff0c;早在2000年就在香港创业板上市&#xff0c;成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…