jvm 触发GC的时机和条件

GC的种类

GC又分为 minor GC 和 Full GC (也称为 Major GC )

minor GC:轻GC

Full GC(Major GC):重GC

Major GC的速度一般会比Minor GC慢十倍以上

什么时候触发GC 

  • 程序调用System.gc时可以触发,也不是立即触发,只是发了个通知要触发,时机由jvm自行调度
  • 系统自身来决定GC触发的时机,根据各区域内存大小以及垃圾回收器的参数设置

Minor GC触发条件 

java对堆分成了几个逻辑区域,其中新生代分为Eden,幸存者区,当新生代的Eden区满时,就会触发Minor GC

因为Java对象大多都具有朝生暮死的特点,所以Minor GC十分频繁,回收速度也较快,一般采用的算法为复制算法

 Full GC触发条件

  • 调用System.gc时,系统建议执行Full GC
  • 老年代空间不足时调用
  • 方法区空间不足时调用
  • 通过Minor GC后进入老年代的平均大小大于老年代的可用内存
  • 由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小
  • GC担保失败

GC担保失败

在发生Minor GC之前,JVM会检查老年代最大可用的连续空间是否大于新生代所有对象总空间。如果条件成立,那么Minor GC是安全的

反之,如果不成立,那么要仍然要看HandlePromotionFailure值,是否允许担保失败。

如果允许担保失败,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,则冒险尝试一次Minor GC,如果小于或者不允许担保失败,则要进行一次Full GC

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

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

相关文章

代码随想录算法训练营第十天|232.用栈实现队列、225. 用队列实现栈

232.用栈实现队列 题目链接:232. 用栈实现队列 文档讲解:代码随想录 状态:写出来 ,但差强人意 思路: 定义两个容器,可以是Stack,也可以是Deque,stackIn相当于临时容器,用来存放元素&…

使用Python源码py文件生成pyo文件

py文件生成pyo文件 对于Python 3.5及以上版本,可以使用如下命令: python -O -m compileall file.py注意事项 Windows平台下,此命令不会报错,但也不会生成pyo文件

git随记

git status 查看文件状态 git status -s 比较简洁的查看文件状态。如下代表此文件是新建的,没有被git跟踪的文件: $ git status -s ?? abc.txtgit add abc.txt 将abc添加到暂存区。后再次git status -s $ git status -s A abc.txtgit reset 将暂存…

嵌入式开发--stm32cubeprogrammer写入选项字节

需要在批量烧写时写入选项字节,操作如下: 在下载页面,勾选选项字节命令, 输入以下命令,后面的0xBB表示选项字节是bb,表示读保护,也可以按需要写其他的字符 -ob rdp0xBB在需要的功能前打上勾&a…

jetson xavier ubuntu20.04ros配置

1、ubuntu源配置 参考Jetson Xavier NX 配置ROS - 哔哩哔哩 Xavier 没法在 Software & Updates 界面中换源,需要手动配置 sources.list 源文件 x86 架构的源(后缀为 /ubuntu/)和 arm 架构的源(后缀为 /ubuntu-ports/&#…

知识图谱抽取实战

相关代码见文末 1.知识图谱应用场景 知识图谱是一种先进的数据组织形式,它通过图数据结构来表示实体(如人、地点、概念)及其之间的复杂关系,便于机器理解和处理。这种结构化知识库允许高效的信息检索、推理和知识发现,尤其适用于处理高度关联且需要深度理解的领域,如医学…

解决wireshark无法抓取mysql数据报文

我前几天在用wireshark抓取mysql协议,只能看到登录信息,完全看不到具体报文。显示如下: 找了多资料,我也没解决这问题。但用公司测试环境的数据库就能抓取到mysql数据报文,观察了下公司的数据库就只发现连接url上多了…

使用 Django Channels 构建实时聊天应用(包含用户认证和消息持久化)

文章目录 准备工作创建 Django 项目创建应用程序配置项目编写 Consumer编写路由创建 URL 路由运行应用用户认证消息持久化显示历史消息结论 Django Channels 是 Django 的一个扩展,允许在 Web 应用中添加实时功能,例如 Websockets、HTTP2 和其他协议。本…

oracle mysql索引区别

文章目录 1.引言1.1 索引的基本概念1.2 Oracle和MySQL的简介 2.Oracle索引2.1 Oracle索引的类型**B-Tree索引****Bitmap索引****Function-Based索引****Partitioned索引****Text索引** 2.2 Oracle索引的工作原理2.3 Oracle索引的实例代码 3.MySQL索引3.1 MySQL索引的类型**B-Tr…

【备忘】制作文件系统时探查开发系统上的依赖项

1.apt-get install类的安装包 这个列表能找到,但是项点太多了,必须进行机器比对,人工比对的话可以按最后安装日期来看: sudo cat /var/log/apt/history.log 我的最后安装的软件包: Start-Date: 2024-05-28 11:57:27 …

[PyQt5] 窗口接收WM_COPY消息

#本程序是python qt5 创建的窗口,拦截外部消息给窗口发送的WM_COPY消息并显示出来。一般是用来作为窗口之间的通讯机制之一。 python文件如下:qt5拦截消息 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QAp…

STM32-14-FSMC_LCD

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU 文章目录 1. 显示器分类2. LCD简…

掌握 NestJS 10.x:从零开始构建高效可扩展的服务器端应用详解

NestJS 是一个用于构建高效、可扩展的 Node.js 服务端应用的框架,基于 TypeScript 构建,并且受 Angular 的启发,提供了模块化、易测试、易维护的架构。NestJS 10.x 引入了一些新特性和改进,进一步提升了开发体验。本文将详细介绍如…

Vue:网络请求axios

Axios 是一个基于 Promise 的网络请求库。 安装 npm install axios引入 <script setup> import axios from axios </script>常用 API axios.get(url[, config]) axios.get(/user,{params: {id: 1234,} }) .then(response > console.log(response)) .catch(…

协方差和协方差矩阵是什么

协方差矩阵&#xff08;Covariance Matrix&#xff09;是一个矩阵&#xff0c;它包含多个随机变量之间的协方差。 协方差是衡量两个随机变量如何一起变化的度量。 协方差矩阵在多元统计分析和机器学习中非常重要&#xff0c;特别是在处理多元正态分布时。 详细解释 协方差&am…

生态融合促发展 YashanDB与丰图科技完成兼容性认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB V23与丰图科技智域城市数字孪生平台顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;充分满足企事业单位在高性能、高可用性、高稳定性及高可控性方面的核心需求&…

比较好的Python课程

最近在学习夜曲编程的Python进阶课程——办公效率化&#xff1b;夜曲编程之前有推出一款学习Python的入门课程&#xff0c;在手机端和电脑端都可以学习的&#xff0c;如果没有时间在手机端学习都很好的。每节课程学习下来&#xff0c;可以收集到Python入门的知识卡片&#xff0…

Ansys Mechanical|组装 External Mechanical Model

Assembling Finite Element Models 上文中介绍了如何导入外部模型并将其组合到单个模型中的示例。 如果要将外部模型与Workbench环境中已有的一个或多个模型组合在一起&#xff0c;该如何操作&#xff1f;本文将介绍这个工作流程。 Ansys Mechanical支持Mechanical Model和Ex…

FPGA新起点V1开发板(七-语法篇)——程序框架+高级语法(选择性做笔记)

文章目录 一、模块结构二、赋值三、条件语句 一、模块结构 默认是wire类型&#xff0c;assign是定义功能。 上面这两个always都是并行 例化 二、赋值 有两种赋值“”和“<” “”是阻塞赋值&#xff0c;也就是从上到下&#xff0c;依次完成 “”是非阻塞赋值&#xff0c;…

开展FMEA,这些准备工作你做足了吗?

在产品研发和制造过程中&#xff0c;失效模式与影响分析&#xff08;FMEA&#xff09;是一项至关重要的质量工具。它能够帮助团队提前识别和预防潜在的产品失效问题&#xff0c;从而提升产品的可靠性和质量。然而&#xff0c;要想充分发挥FMEA的效用&#xff0c;充分的准备工作…