JVM认识之垃圾收集算法
一、标记-清除算法
1、定义
标记-清除算法是最基础的垃圾收集算法。它分为标记和清除两个阶段。先标记出所有需要回收的对象(即垃圾),在标记完成后再统一回收所有垃圾对象。
2、优点和缺点
- 优点:实现简单
- 缺点:
- 可能会产生内存碎片,导致内存分配效率降低,影响程序的性能。
- 标记和清除阶段需要暂停程序的执行,造成一定的延迟。
二、复制算法
1、定义
复制算法,它把可用内存按容量分为大小相等的两块,每次只用其中的一块。当这一块的内存用完了,则会把存活的对象复制到另外的一块上,然后把已使用的内存空间一次清理掉。
2、优点和缺点
- 优点:
- 实现简单,运行高效;
- 由于是对整个内存半区进行垃圾回收,所以不需要考虑内存碎片问题。
- 缺点:
- 由于算法代价是把可用内存缩小为原来的一半,所以该算法的内存利用率较低;
- 对象存活率高时,由于需要进行较多的复制操作,效率会变低。
3、应用
新生代的垃圾回收
把新生代(默认)按8:1:1划分。Eden区有一块,该块占8份;Survior有2块,每块占1份。每次只使用Eden区和其中一块Survior区。当Eden区满了时,会触发Minor GC。Minor GC过程是把Eden区和Survior区的存活对象复制到剩下的一块Survior区,然后一次性清理掉Eden区和之前Survior区的已使用空间。其中,若剩下的那一块Survior区没有足够的连续空间容纳Eden区和已使用Survior区的存活对象,且有老年代进行内存担保,则通过内存担保机制进入老年代。
三、标记-整理算法
1、定义
标记-整理算法,它主要分为标记和整理两个阶段。标记阶段和标记-清除阶段相同,都是标记出垃圾对象。而整理阶段是先把所有存活对象都向一端移动,然后清理掉端边界外的内存。
2、优点和缺点
- 优点:
- 解决内存碎片问题,提高堆的内存利用率。
- 缺点:
- 由于需要标记所有存活对象并整理所有存活对象的引用地址,所以效率比较低;
- 在移动过程中,若移动对象被其中对象引用,则还需要调整引用地址,这可能导致程序暂停。
3、应用
老年代垃圾回收
四、增量收集算法
1、定义
若一次性收集JVM中所有的垃圾,则可能会造成程序长时间的停顿。而增量收集算法可以让垃圾回收线程和程序线程交替执行。每次垃圾回收线程只回收一小片区域的内存空间,接着切换到程序线程,依次反复,直到垃圾回收完成。
2、优点和缺点
- 优点:减少系统停顿时间。
- 缺点:由于线程切换造成垃圾回收成本上升且系统吞吐量下降。
3、应用
CMS收集器
五、分代收集算法
1、定义
分代收集算法是根据对象的存活周期不同把内存空间划分为几块。一般把JVM堆划分为新时代和老年代,然后根据各个年代的特点使用适当的垃圾回收算法。由于新生代中的对象大部分存活周期短,则可以选用复制算法,只需要进行少量复制成本就可以回收垃圾。而老年代中的对象存活率高,且没有额外空间进行内存担保,则需要选择标记-清除算法或者标记-整理算法进行垃圾回收。
2、优点和缺点
3、应用
大部分JVM的垃圾回收
六、分区算法
1、定义
分区算法把整个堆空间划分为连续的不同小区间,每个小区间独立使用、独立回收。
2、优点和缺点
- 优点:
- 控制一次回收多少个小区间,减少GC造成的程序停顿时间;
- 解决内存碎片问题。
- 缺点:实现复杂。
3、应用
G1收集器
相关文章:
JVM认识之垃圾收集算法
一、标记-清除算法 1、定义 标记-清除算法是最基础的垃圾收集算法。它分为标记和清除两个阶段。先标记出所有需要回收的对象(即垃圾),在标记完成后再统一回收所有垃圾对象。 2、优点和缺点 优点:实现简单缺点: 可能…...
docker-compose部署gitlab
需要提前安装docker和docker-compose环境 参考:部署docker-ce_安装部署docker-ce-CSDN博客 参考:docker-compose部署_docker compose部署本地tar-CSDN博客 创建gitlab的数据存放目录 mkdir /opt/gitlab && cd mkdir /opt/gitlab mkdir {conf…...
Colab/PyTorch - 001 PyTorch Basics
Colab/PyTorch - 001 PyTorch Basics 1. 源由2. PyTorch库概览3. 处理过程2.1 数据加载与处理2.2 构建神经网络2.3 模型推断2.4 兼容性 3. 张量介绍3.1 构建张量3.2 访问张量元素3.3 张量元素类型3.4 张量转换(NumPy Array)3.5 张量运算3.6 CPU v/s GPU …...
翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三
合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…...
基于Seata实现分布式事务实现
Seata 是一个开源的分布式事务解决方案,它提供了高性能和简单易用的分布式事务服务。Seata 将事务的参与者分为 TC(Transaction Coordinator)、TM(Transaction Manager)和 RM(Resource Manager)…...
adss光缆是什么意思
adss光缆,adss光缆型号,adss光缆用途 什么是adss光缆 ADSS用于高压输电线路并利用电力系统输电塔干,整个光缆为非金属介质,自承悬挂于电力铁塔上的电力强度最小的位置。它运用于已建高压输电线路,具有安全性高&#…...
JavaScript异步编程——04-同源和跨域
同源和跨域 同源 同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口完全相同。 跨域问题的解决方案 从我自己的网站访问别人网站的内容,就叫跨域。 出于安全性考虑,浏览器不允许ajax跨域获取…...
出差——蓝桥杯十三届2022国赛大学B组真题
问题分析 该题属于枚举类型,遍历所有情况选出符合条件的即可。因为只需要派两个人,因此采用两层循环遍历每一种情况。 AC_Code #include <bits/stdc.h> using namespace std; string str;//选择的两人 bool ok(){if(str.find("A")!-1…...
UE5(射线检测)学习笔记
这一篇会讲解射线检测点击事件、离开悬停、进入悬停事件的检测,以及关闭射线检测的事件,和射线检测蓝图的基础讲解。 创建一个简单的第三人称模板 创建一个射线检测的文件夹RadiationInspection,并且右键蓝图-场景组件-命名为BPC_Radiation…...
语音识别的基本概念
语音识别的基本概念 言语是一种复杂的现象。人们很少了解它是如何产生和感知的。天真的想法常常是语音是由单词构成的,而每个单词又由音素组成。不幸的是,现实却大不相同。语音是一个动态过程,没有明确区分的…...
OpenCV Radon变换探测直线(拉东变换)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Radon变换可以将原始图像中直线特征的处理问题转化为变换域图像中对应点特征的处理问题,其中对应特征点的横坐标表示原始图像的旋转角度,一般来讲原始图像中的噪声不会分布在直线的特征上。因此,Radon变换在探测…...
六、Redis五种常用数据结构-zset
zset是Redis的有序集合数据类型,但是其和set一样是不能重复的。但是相比于set其又是有序的。set的每个数据都有一个double类型的分数,zset正是根据这个分数来进行数据间的排序从小到大。有序集合中的元素是唯一的,但是分数(score)是可以重复的…...
FPGA第一篇,FPGA现场可编程门阵列,从0开始掌握可编程硬件开发(FPGA入门指南)
简介:FPGA全称Field-Programmable Gate Array,是一种可编程逻辑器件,它通过可编程的逻辑单元和可编程的连接网络实现了灵活的硬件实现。与固定功能的集成电路(ASIC)相比,FPGA具有更高的灵活性和可重新配置性…...
C#实现简单音乐文件解析播放——Windows程序设计作业2
1. 作业内容 编写一个C#程序,要求实现常见音乐文件的播放功能,具体要求如下: 1). 播放MP3文件: 程序应能够读取MP3文件,并播放其中的音频。 2). 播放OGG文件: 应能够播放ogg文件。 …...
Python数据爬取超简单入门
## 什么是网络爬虫? 网络爬虫是一种自动浏览器程序,能够自动地从互联网获取数据。爬虫的主要任务是访问网页,分析网页内容,然后提取所需的信息。爬虫广泛应用于数据收集、数据分析、网页内容监控等领域。 ## 爬虫的基本步骤 1.…...
Dreamweaver 2021 for Mac 激活版:网页设计工具
在追求卓越的网页设计道路上,Dreamweaver 2021 for Mac无疑是您的梦幻之选。这款专为Mac用户打造的网页设计工具,集强大的功能与出色的用户体验于一身。 Dreamweaver 2021支持多种网页标准和技术,让您能够轻松创建符合现代网页设计的作品。其…...
【Git】Git学习-15:分支简介和基本操作
学习视频链接:【GeekHour】一小时Git教程_哔哩哔哩_bilibili编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 git bran…...
浏览器提示网站“不安全”原因及解决方法
是否经常会遇到访问的网站被浏览器提示访问不安全?那么,浏览器提示网站不安全通常有哪些原因又该如何处理这种不安全提醒,以下总结了几个原因及相应的处理办法: 一、网站管理者原因排查及处理办法: 1、网站没有部署S…...
Jmeter详细学习思路和教程
目录 1、JMeter环境准备 1.1、介绍 1.2、与LoadRunner比较 1.3、前提条件 1.4、安装配置 2、JMeter脚本 2.1、测试计划 2.2、线程组 2.3、Sampler 2.4、HTTP请求 2.5、查看结果树 2.6、HTTP Cookie管理器 2.7、HTTP信息头管理器 2.8、响应断言 2.9、参数化 3、JM…...
钉钉开放平台创建企业内部H5微应用或者小程序
前言: 在当今企业数字化转型的浪潮中,创建企业内部H5微应用或小程序已成为提升工作效率和促进内部沟通的重要举措。发话不多说本文将介绍如何利用钉钉平台快速创建这些应用,让企业内部的工作更加便捷高效。 步骤 1.在浏览器打开链接…...
Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount
要实现这个功能,可以通过创建一个自定义的mount命令的包装器(wrapper)来完成。这个包装器脚本会首先提示用户输入密码,如果密码正确,则执行实际的mount命令。以下是创建这样一个包装器的步骤: 创建一个名为…...
【网络协议】----IPv6协议报文、地址分类
【网络协议】----IPv6协议简介 【网络协议】----IPv6协议简介IPv6特点IPv4 和 IPv6报文结构IPv6报文格式-拓展报头 IPv6地址分类IPv6地址表示IPv6单播地址可聚合全球单播地址链路本地地址唯一本地地址特殊地址补充 接口标识(主机位)生成方法通过EUI-64规…...
Llama改进之——SwiGLU激活函数
引言 今天介绍LLAMA模型引入的关于激活函数的改进——SwiGLU1,该激活函数取得了不错的效果,得到了广泛地应用。 SwiGLU是GLU的一种变体,其中包含了GLU和Swish激活函数。 GLU GLU(Gated Linear Units,门控线性单元)2引入了两个不同的线性层…...
在数据分析中所需要运用到的概率论知识
数据分析 前言一、总体二、样本三、统计抽样抽取的基本准则 四、随机抽样抽签法随机数法 五、分层抽样六、整群抽样七、系统抽样八、统计参数常用的分布函数参数 九、样本统计量十、样本均值和样本方差十一、描述样本集中位置的统计量样本均值样本中位数样本众数 十二、描述样本…...
韩顺平0基础学Java——第6天
p87-p109 运算符(第四章) 四种进制 二进制用0b或0B开头 十进制略 八进制用0开头 十六进制0x或0X开头,其中的A—F不区分大小写 10转2:将这个数不断除以2,直到商为0,然后把每步得到的余数倒过来&#…...
react18子组件设置接收默认值和值类型验证
父组件传值 import ChildCom from ./components/ChildCom export default function Person {return(<div><ChildCom name"alan-ben" age{18} score{[98, 97, 100]} /></div>) } 子组件接收并验证类型 import React from react import PropTypes…...
Java 高级面试问题及答案(二)
Java高级面试问题及答案 1. 在Java中,什么是强引用、软引用、弱引用和虚引用,它们有什么区别? 答案: 在Java中,引用类型决定了对象的生命周期,主要有以下四种: 强引用:最常见的引…...
数据统计:词频统计、词表生成、排序及计数、词云图生成
文章目录 📚输入及输出📚代码实现 📚输入及输出 输入:读取一个input.txt,其中包含单词及其对应的TED打卡号。 输出 output.txt:包含按频率降序排列的每个单词及其计数(这里直接用于后续的词云…...
W801学习笔记二十四:NES模拟器游戏
之前已经实现了NES模拟器玩游戏。W801学习笔记九:HLK-W801制作学习机/NES游戏机(模拟器) 现在要在新版本掌机中移植过来。 1、把NES文件都拷贝到SD卡中。 这回不会受内存大小限制了。我这里拷贝了4个,还可以拷贝更多。 2、应用初始化中,加载…...
ECMAScript 6简介
ECMAScript 6简介 发布日期目标ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 ESx标准 命名规则 ECMAScript 的历史 1. ECMAScript 6简介 1.1. 发布日期 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已…...
学会wordpress 怎么赚钱/网站推广seo
文章目录进程间通信介绍进程间通信的目的进程间通信的技术背景进程间通信的本质进程间通信的一些标准进程间通信意义进程间通信分类管道管道的概念管道的原理匿名管道站在文件描述符角度-深度理解管道站在内核角度-管道本质命名管道system V 共享内存共享内存的理解system V消息…...
做软装找产品上哪个网站/知名网络推广
maven项目 update clean install 重启 服务消费者转载于:https://www.cnblogs.com/qingfengzhuimeng/p/7281885.html...
模板手机网站建设多少钱/郑州竞价代运营公司
撰文 | JZ专栏 | 九章算法题目描述 有一个集合组成的list,如果有两个集合有相同的元素,将他们合并。返回最后还剩下几个集合。 思路点拨 先遍历所有元素,以元素为key,元素所属的集合id为value(是一个集合)建立hashmap࿰…...
网站建设链接演示/东莞搜索优化
ssh -p2016 apache10.10.18.130 /bin/sh /data/www/vhosts/WOStest3_ENV/update_env.sh 需要设置shell远程免密码登录 转载于:https://www.cnblogs.com/ai594ai/p/7306402.html...
wordpress的搭建环境/百度广告运营
常规的这两个校验工具的用法,可以阅读之前的博文,链接如下: @Valid 和@Validated的区别 那么如果大家看完了基础用法,就可以继续深入学习了,本篇博文主要对这个两个注解的用法进行自定义,实现扩展 废话不多说,上正菜…… 案例一 /*** 大版本信息表** @author fangh*…...
一级a做爰片试看 免费网站/企业qq一年多少费用
2019独角兽企业重金招聘Python工程师标准>>> ping IPADDR 测试网络是否连通 -s 字节数 -i 发送间隔 -c 次数 traceroute 显示路由追踪信息 IPADDR/HOSTNAME route 显示路由 -n 数字形式 -host HOSTNAME route add -net IPADDR netmask NETMASK gw GATEWAY route del…...