堆1111111111111111

news2025/4/8 10:21:45

1)一个java进程对应这个一个JVM实例,Runtime,就对应着一个运行时数据区,一个进程中的多个线程,共享同一份堆空间和方法区,而栈和程序计数器使每一个线程私有的

2)通过-Xms10m -Xmx10m是初始堆空间和最大堆空间

3)堆空间在物理上可以不连续,逻辑上是连续的,而栈只存在入栈和出栈,不会有垃圾回收

4)堆上面有着各个线程的缓冲区,每一个线程都有着自己的小空间,这个小空间就是TLB,这个时候并发性会更好;

5)不是没有引用执行对象,对象就立即回收,只有说堆中快满了不足了,才会执行GC垃圾回收,不是栈中的引用弹出栈,对象就立即被回收了,否则GC的频率过高,就会影响用户线程的执行,如果一直进行垃圾回收,就会影响用户线程的执行,所以应该将堆空间的区域设置的大一些合理的分配,减少GC,让用户线程执行时间长一些,提升吞吐量,频繁的GC会影响性能,都是Throwable的子类,error不可控,exception一般需要手动去捕获,比如说javaheapspace

6)-Xms10m -Xmx10m -XX:+PrintGCDetails

查看堆占用的情况:

 

伊甸园区:幸存者1区:幸存者2区=8:1:1

默认新生代和老年代的占比是2:1

新生代:伊甸园区+幸存者1区+幸存者2区

yonggc/minor GC:触发条件时伊甸园区满了幸存者区满了不会触发yonggc,但是yongGC回收的过程中会顺便带上回收幸存者区伊甸园区满了之后再来对象,这个时候再次进行垃圾回收,会产生STW,需要进行判断各个对象是否是垃圾,不是垃圾的移动到幸存者1区或者是幸存者2区,放在空的区,空的幸存者区是to(从伊甸园区的对象首先放到幸存者1区),不空的是from;

1)如果幸存者0区或者是幸存者1区放不下伊甸区的对象,直接将对象放到老年代

如果说伊甸园区和幸存区的比例比较大的话,幸存者1区和幸存者2区所占的空间比较小,理想情况下所有的伊甸区中的垃圾对象都被回收了,很少的对象存活到幸村区,但是一般情况下,幸村区的对象比较少,如果再向伊甸园区放对象,很容易导致伊甸园区对象放在幸存区,幸村区容易存不下,于是直接给放到old区,会导致minorGC失去意义,因为正常进行yongGC的时候幸存者1区和幸存者2区也会进行垃圾回收,而现在有些对象没有达到阈值15就直接到达老年代了,minorGC意义不大况且尽量说先把对象在新生代回收,分代意义更小

2)如果伊甸园区比较小,yonggc会频繁触发,会影响用户进程,影响STW的时间

MarkWord里面存放对象的GC年龄只有4位,所以最大也只是15

图解对象分配的过程 - 掘金 (juejin.cn)

JVM调优:GC回收能够少一些,GC扫描的过程中会出现STW,用户线程终止

从频率上看大部分情况下都是回收的是新生代,伊甸园区满的时候才会触发youngGC,只有触发yongGC,才会顺便回收幸存者1区或者是幸存者2区

比如说有一个房间很多垃圾,GC标记过程中用户要STW

分代垃圾回收机制——老年代收集 - 掘金 (juejin.cn)

分代垃圾回收机制——老年代收集 - 掘金 (juejin.cn)

1)system.gc:

2)老年代空间不足:

TLAB

进行minorGC的时候要将新生代的对象往老年代里面进行存放,先看看老年代的最大可用连续空间是否大于新生代所有对象的总空间,如果比他大那么,说明这里面最坏的情况就是新生代的对象没有一个是垃圾,老年代肯定都是可以放得下

如果小于,说明此时minorGC不安全,那么继续判断这个参数,如果这个参数是true,那么会进行继续检查老年代最大可用连续空间是否大于历次劲升到老年代的对象的平均大小

这个参数永远是true

老年代GC垃圾回收慢

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

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

相关文章

Ceph介绍与部署

Ceph介绍与部署 一、存储基础1.1、单机存储设备1.1.1、单机存储的问题 1.2、商业存储解决方案1.3、分布式存储(软件定义的存储 SDS)1.3.1、分布式存储的类型 二、Ceph 简介三、Ceph 优势四、Ceph 架构五、Ceph 核心组件5.1、Pool中数据保存方式支持两种类…

LeetCode2562

public static long jointArrayData(int[] nums) {//定义变量存放数据long num 0;//头尾“相加”for (int i 0,j nums.length-1; i < j; i,j--) {if (i!j){//String.valueOf先将Int转String&#xff0c;进行字符串的连接&#xff0c;再用Integer.parseInt方法转回IntStri…

Qt Core篇 后端上位机界面开发

Qt Core篇 后端上位机界面开发 Qt Core 我选择了Qt,依旧度日如年&#xff0c;简单发布一篇&#xff0c;代表我还活着 Qt Core Qt Core是Qt框架的核心模块之一&#xff0c;它提供了一套跨平台的C类库&#xff0c;用于处理事件循环、线程、文件和目录操作、数据类型、日期和时间…

PTA 7-5 令人抓狂的四则运算

题目 曾记否&#xff0c;我们小学时&#xff0c;遇到这种四则运算&#xff0c;心情是抓狂的&#xff1a; 那么当我们学会使用计算机&#xff0c;自然是要程序去完成这个工作啦~ 现在请对输入的四则运算求值。注意&#xff1a; 四则运算表达式必定包含运算数&#xff0c;还可能…

2023NOIP A层联测10-子序列

给定一个长为 n n n 的仅有小写英文字母构成字符串 S S 1 S 2 ⋯ S n SS_1S_2\cdots S_n SS1​S2​⋯Sn​。我们定义一个字符串是好的&#xff0c;当且仅当它可以用两个不同的字母 x 和 y 表示成 xyxyxyx... 的形式。例如&#xff0c;字符串 abab、tot、z 是好的&#xff0c…

3.4 数据查询

思维导图&#xff1a; 前言&#xff1a; --- ### 概述 - 数据查询是数据库操作的核心&#xff0c;主要通过SQL中的SELECT语句来实现。 - SELECT语句提供了非常丰富的查询功能&#xff0c;包括单表查询、多表连接查询和嵌套查询等。 ### SELECT语句的基本格式 SELECT [ALL|D…

【MySQL】存储引擎简介、存储引擎特点、存储引擎区别

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MySQL 一、MySQL体系结构二、存储引擎简介三…

zookeeper应用场景(一)

一、zookeeper客户端api 1、官方Java客户端api 引入zookeeper client依赖 <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.9.0</version> </dependency> 1&#xff09…

解析项目管理任务跟踪器,助力项目进展掌握!

什么是项目管理任务跟踪器&#xff1f;项目管理任务跟踪器是项目经理简化计划、组织和执行项目任务直至完成的重要工具。该工具可帮助他们掌握需要完成的工作、确定收到的工作请求的优先级、完成项目并在预算范围内按时实现目标。 除了布置和跟踪任务之外&#xff0c;项目管理任…

unity2022版本 实现加减进度条

简介 在现代游戏开发中&#xff0c;用户界面 (UI) 扮演着至关重要的角色&#xff0c;它不仅为玩家提供信息&#xff0c;还增强了游戏的可玩性。加减进度条是一种常见的UI元素&#xff0c;它可以用于显示游戏中的进度、倒计时、资源管理和其他关键信息。在这篇博客中&#xff0…

【MySQL入门到精通-黑马程序员】MySQL基础篇-DQL

文章目录 前言一、DQL-介绍二、DQL-语法二、DQL-基本查询三、DQL-条件查询四、DQL-聚合函数五、DQL-分组查询六、DQL-排序查询七、DQL-分页查询八、DQL-执行顺序总结 前言 本专栏文章为观看黑马程序员《MySQL入门到精通》所做笔记&#xff0c;课程地址在这。如有侵权&#xff0…

安全设备和防火墙

文章目录 微步TDP态势感知防火墙防火墙的负载均衡 微步TDP态势感知 安全设备的主要功能在黑名单&#xff0c;只要记住黑名单的功能在哪即可 常用的是威胁选项卡的监控功能&#xff0c;监控模块会把实时的告警列出来&#xff0c;只要列出来就能分析流量是误报还是真实的&#x…

【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用域)

目录 前言 九、再论函数 9.1 参数 9.1.1 参数的传递规则 9.1.2 指针作参数 9.1.3 数组作参数 9.1.4 结构体作参数 a. 直接用结构体变量作函数参数 b. 用指向结构体变量的指针作函数参数 9.2 函数值 9.2.1 返回指针值 9.2.2 返回结构体值 a. 返回结构体值 b. 返回…

高效防汛决策:山海鲸可视化系统助力城市防洪

随着全球气候的变化&#xff0c;自然灾害如洪水、台风等频发&#xff0c;防范洪水成为城市管理者和居民们亟待解决的重要问题。 洪水的威胁 洪水是自然界的杀手之一&#xff0c;不仅会造成大量的财产损失&#xff0c;还可能危害人们的生命安全。因此&#xff0c;预测、监测和有…

自我监督学习日志

学习日志 10.12 一天学不了一分钟&#xff0c;不知道为什么也就是了 今天一定要学一个小时&#xff01; 机器学习就是机器帮我们找一个函数 语音辨识&#xff0c;语音&#xff0c;声音讯号 转化为文字 帮我们找一个人类写不出来的复杂函数 类神经网络 输入 一张图片用一个矩…

2023-10-12 LeetCode每日一题(找出数组的串联值)

2023-10-12每日一题 一、题目编号 2562. 找出数组的串联值二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数数组 nums 。 现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。 例如&#xff0c;15 和 49 的串联是 1549 。 nums 的 串…

不容易解的题10.10

5.最长回文子串 5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-palindromic-substring/?envTypelist&envIdZCa7r67M给一个字符串&#xff0c;让我们找最长回文子串 这题不用说&#xff0c;回文子串那一定是连续的&#…

【Node.js】路由

基础使用 写法一&#xff1a; // server.js const http require(http); const fs require(fs); const route require(./route) http.createServer(function (req, res) {const myURL new URL(req.url, http://127.0.0.1)route(res, myURL.pathname)res.end() }).listen…

Java从resources文件下载文档,文档没有后缀名

业务场景&#xff1a;因为公司会对excel文档加密&#xff0c;通过svn或者git上传代码也会对文档进行加密&#xff0c;所以这里将文档后缀去了&#xff0c;这样避免文档加密。 实现思路&#xff1a;将文档去掉后缀&#xff0c;放入resources下&#xff0c;获取输入流&#xff0…

12V手电钻保护板如何接线演示

爱做手工的小伙伴们肯定会用到手电钻&#xff0c;那么电池消耗完了&#xff0c;或要换的&#xff0c;或要自己动手做几个备用电源&#xff0c;关键点就是电路保护板的接线。废话不多说&#xff0c;直接上板子看实操。 文章目录 一、线路板图1、输入接线2、输出接线 二、接线方法…