GC相关知识简单学习

GC(1.安全点的相关知识) 目录: 1.安全点的相关知识 1.1 OOPMap 2. GC基本算法 3. G1算法 4. 通过Reference和GC交互 5. GC友好编程安全点的相关知识主要有如下几个问题: 1.什么是安全点 2.安全点的位置 3.安全点的管理、实现 4.什么场景、功能需要安全点的配合 5.Safe Reg 阅读详情

识别垃圾方法

引用计数法(Reference Counting): 对每个对象的引用进行计数,每当有一个地方引用它时计数器 +1、引用失效则 -1,引用的计数放到对象头中,大于 0 的对象被认为是存活对象。虽然循环引用的问题可通过 Recycler 算法解决,但是在多线程环境下,引用计数变更也要进行昂贵的同步操作,性能较低,早期的编程语言会采用此算法。
可达性分析,又称引用链法(Tracing GC): 从 GC Root 开始进行对象搜索,可以被搜索到的对象即为可达对象,此时还不足以判断对象是否存活/死亡,需要经过多次标记才能更加准确地确定,整个连通图之外的对象便可以作为垃圾被回收掉。目前 Java 中主流的虚拟机均采用此算法。

收集算法

Mark-Sweep(标记-清除): 回收过程主要分为两个阶段,第一阶段为追踪(Tracing)阶段,即从 GC Root 开始遍历对象图,并标记(Mark)所遇到的每个对象,第二阶段为清除(Sweep)阶段,即回收器检查堆中每一个对象,并将所有未被标记的对象进行回收,整个过程不会发生对象移动。整个算法在不同的实现中会使用三色抽象(Tricolour Abstraction)、位图标记(BitMap)等技术来提高算法的效率,存活对象较多时较高效。
Mark-Compact (标记-整理): 这个算法的主要目的就是解决在非移动式回收器中都会存在的碎片化问题,也分为两个阶段,第一阶段与 Mark-Sweep 类似,第二阶段则会对存活对象按照整理顺序(Compaction Order)进行整理。主要实现有双指针(Two-Finger)回收算法、滑动回收(Lisp2)算法和引线整理(Threaded Compaction)算法等。
Copying(复制): 将空间分为两个大小相同的 From 和 To 两个半区,同一时间只会使用其中一个,每次进行回收时将一个半区的存活对象通过复制的方式转移到另一个半区。有递归(Robert R. Fenichel 和 Jerome C. Yochelson提出)和迭代(Cheney 提出)算法,以及解决了前两者递归栈、缓存行等问题的近似优先搜索算法。复制算法可以通过碰撞指针的方式进行快速地分配内存,但是也存在着空间利用率不高的缺点,另外就是存活对象比较大时复制的成本比较高。

收集器

1 分代收集器
ParNew: 一款多线程的收集器,采用复制算法,主要工作在 Young 区,可以通过 -XX:ParallelGCThreads 参数来控制收集的线程数,整个过程都是 STW 的,常与 CMS 组合使用。
CMS: 以获取最短回收停顿时间为目标,采用“标记-清除”算法,分 4 大步进行垃圾收集,其中初始标记和重新标记会 STW ,多数应用于互联网站或者 B/S 系统的服务器端上,JDK9 被标记弃用,JDK14 被删除。
2 分区收集器
G1: 一种服务器端的垃圾收集器,应用在多处理器和大容量内存环境中,在实现高吞吐量的同时,尽可能地满足垃圾收集暂停时间的要求。
ZGC: JDK11 中推出的一款低延迟垃圾回收器,适用于大内存低延迟服务的内存管理和回收,SPECjbb 2015 基准测试,在 128G 的大堆下,最大停顿时间才 1.68 ms,停顿时间远胜于 G1 和 CMS。
Shenandoah: 由 Red Hat 的一个团队负责开发,与 G1 类似,基于 Region 设计的垃圾收集器,但不需要 Remember Set 或者 Card Table 来记录跨 Region 引用,停顿时间和堆的大小没有任何关系。停顿时间与 ZGC 接近。
3 其他收集器
Metronome、Stopless、Staccato、Chicken、Clover 等实时回收器,Sapphire、Compressor、Pauseless 等并发复制/整理回收器,Doligez-Leroy-Conthier 等标记整理回收器。

Simulink仿真模块-Signal Generator Signal Generator:生成各种波形 所在的位置库为:Simulink / Sources 模型为: 说明 Signal Generator模块可以产生四种不同波形: 正弦波 方波 锯齿波 随机 可以使用 hertz 或 rad/sec 为单位表示信号参数。双击模型可以选择需要生成的波形,如图所示: 使用默认参数值,可以获得下列波形之一: 波形 波形输出 正弦波 ... 阅读详情

相关推荐

ARM一致性总线CMN600AE

是基于Mesh拓扑结构,对外支持AMBA CHI/ACE-LITE等接口,内部改用路由结构转发数据,并提供硬件一致性和系统缓存,还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz,另外AE版本增加了车规芯片的安全功能,总线内部采用EDC检查,接口采用的奇校验。CMN-600AE具有以下特点:该网络符合功能安全标准,例如ISO 26262(汽车电子领域的功能安全标准)或IEC 61508(工业自动化领域的功能安全标准)等。

weixin_50518899的博客 3501

《垃圾回收算法手册 自动内存管理的艺术》——引用计数与垃圾回收器的比较(笔记)

《垃圾回收算法手册 自动内存管理的艺术》 引用计数与垃圾回收器比较

weixin_46949627的博客 1189

植物GO注释

本文主要是对没有GO term库的植物进行注释。 1、选用AgriGo 进行注释,在agriGO中点击species后,查看与你目标物种相近的物种作为库 2、比如我以甜菜为例 为了找到和GO term对应的ID,先找到PLAZA,进入网站https://bioinformatics.psb.ugent.be/plaza/versions/plaza_v3_di...

weixin_30300225的博客 2224

Android岗面试:看懂这些帮你轻松解决就业问题!成功入职阿里

前言 下面的题目都是大家在面试字节跳动或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。 参考解析:郭霖、鸿洋 内容特点:条理清晰,含图像化表示更加易懂。 内容概要:包括 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈! 接下来我们针对字节跳动Android中高级面试展开的

Sunbuyi的博客 318

基础知识学习 -- qnx 系统

qnx os车载系统

求变,从思想开始 3873

Ubuntu 22.04 上 Mezzanine CMS 完整安装指南

CMS(内容管理系统)是构建博客、企业官网等静态与动态内容混合站点的核心技术栈;Django 作为 Python 生态中最成熟的 Web 框架,凭借其 ORM、Admin 和安全机制,成为 CMS 开发的首选基础。Mezzanine 是基于 Django 的轻量级 CMS,以开箱即用、零配置多语言和内置 SEO 工具为特色,特别适合中小项目快速落地。在 Ubuntu 这类强调稳定性的服务器操作系统上部署时,关键挑战并非代码逻辑,而是系统层依赖协同——如 Python 版本锁定、SQLite FTS5 支持、

weixin_33508411的博客 304

从头开始学习->JVM(九):垃圾收集(上)

前言 垃圾收集,在JVM的世界中,是属于非常重要的一环。 为了实现控制反转设计原则,java通过一种方式,依赖注入,将java对象的生成和销毁都交给了我们的java程序自己解决,也就是说,java程序不会控制自己对象的生命周期,那么如果我们的JVM没有管理对象的生成和销毁,那么就会导致我们的程序生成的java对象堆满了我们的JVM内存,导致内存不断的出现内存溢出的情况。 于是,JVM有了垃圾收集这一环节,目的自然就是为了保证我们的JVM不出现内存溢出等问题。 在JVM中,程序计数器、虚拟机栈、本地方法栈3.

qq_40407127的博客 505

一文读懂 SAP ICF Services:从 SICF 激活到 ABAP OData V2/V4 安全与实战

本文系统化介绍了ABAP系统中ICF服务的关键概念及实践要点。主要内容包括:ICF服务的核心安全机制,需显式激活才能响应HTTP请求;在SICF中正确激活服务的操作步骤;OData V2/V4服务所需的不同ICF节点配置,如V4统一入口节点/sap/opu/odata4;典型问题如default_host未激活会导致HOST_INACTIVE错误;安全实践包括CSRF防护机制和权限对象(S_ICF_ADM)配置;以及实际案例分析和常见ICF服务节点的功能说明。文章为ABAP开发者与运维人员提供了ICF服务管

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 469

jvm两万字详解

jvm两万字详解

h295928126的博客 1695

PCB板Gerber文件的理解和制作

Gerber文件是PCB生产的关键文件,主要包括:1)走线层(GTL/GBL);2)阻焊层(GTS/GBS);3)丝印层(GTO/GBO);4)板框层(GMx/GKO);5)钢网层(Gtp/GBp);6)钻孔文件(NCdrillFiles)。其中1-10项和15项钻孔文件必须提供,建议包含11-14项辅助钻孔层。Gerber文件不含过孔属性,需提前在AD中设置过孔盖油。导出步骤包括:导出非机械层、机械层和钻孔层,新版AD可通过"文件->制造输出->GerberFiles"操作

qq_37999850的博客 852

GEE高阶应用——如何绘制2000-2022年土地利用变化轨迹时序图

土地利用变化是指在一定时间范围内,土地利用类型和结构发生的变化。时序变化是指这种变化随时间的推移而发生的序列变化。土地利用变化轨迹的时序变化具体介绍如下:首先,土地利用变化轨迹的时序变化体现在土地利用类型的演变上。在过去的几十年里,随着人口的增加、经济的发展和城市化的推进,土地利用类型发生了显著的变化。传统的农田逐渐减少,而城市、工业、交通、居住等用地的面积不断扩大。同时,随着环境保护意识的提高,生态保护用地、森林、湿地等绿色用地的面积也在增加。

此星光明博客 1113

八股文之【JVM垃圾回收】

这是jvm第二期,主要讲垃圾回收,包括垃圾识别、垃圾回收算法、垃圾回收器。 如果识别垃圾 引用计数法(Reference Counting): 对每个对象的引用进行计数,每当有一个地方引用它时计数器 +1、引用失效则 -1,引用的计数放到对象头中,大于 0 的对象被认为是存活对象。虽然循环引用的问题可通过 Recycler 算法解决,但是在多线程环境下,引用计数变更也要进行昂贵的同步操作,性能较低,早期的编程语言会采用此算法。 可达性分析,又称引用链法(Tracing GC): 从 GC Root 开始进

布洛尼亚 540

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java gc日志_深入学习JAVA GC日志的相关知识

GC环境模拟首先我们给出如下代码用来触发GCpublic static void main(String[] args) {// 每100毫秒创建100线程,每个线程创建一个1M的对象,即每100ms申请100M堆空间Executors.newScheduledThreadPool(1).scheduleAtFixedRate(() -> {for (int i = 0; i < 10...

weixin_29572661的博客 127

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android面试(JVM部分,含存储区、GC、内存溢出泄漏优化)

(2)堆是向高地址扩展的,不连续的内存区域,因为它是由链表存储的内存区域,所以是不连续的,链表的遍历就是由低地址向高地址的,堆的大小受限于计算机中有效的虚拟内存空间,所以堆获得的空间比较灵活,也比较大。(3)申请效率上,一般是new,速度较慢,容易产生内存碎片。equals:只能比较引用数据类型,基本数据类型没有此方法,如果没有重写Object的equals方法,则该方法返回的结果就是==的结果,重写后的equals方法比较的是对象中的属性,如String类就重写了equals方法,比较的是对象的值。

2401_84104883的博客 1015

JVM中GC算法详细通俗讲解

田成荣 353

Android GC相关小知识

GC原因不一样,GC效果不一样 /art/runtime/gc/gc_cause.h // What caused the GC? enum GcCause { // Invalid GC cause used as a placeholder. kGcCauseNone, // GC triggered by a failed all...

weixin_34217773的博客 353

gc日志怎么看_一个简单案例,带你看懂GC日志

环境准备这样一个案例程序:public 我们采用如下参数来运行上述程序:❝ -XX:NewSize=10M -XX:MaxNewSize=10M -XX:InitialHeapSize=20M -XX:MaxHeapSize=20M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 -XX:PretenureSizeThreshold=3M -XX:+...

weixin_39946798的博客 3018

JVM学习之GC流程和GC策略

新生代可用GC策略 串行GC 并行回收GC STW:在年轻代使用并行GC处理的时候,会产生一个“STW”暂停,在进行对象 回收的时候所有其他线程将被暂时性挂起。 并行GC 老年代可用GC策略 串行GC 并行GC 并发GC GC策略参数调整: 观察GC策略 一、默认策略 java String str = &amp;amp;amp;quot;showGCStrategy&amp;amp;amp;quot;; while (tr...

酸奶灬的博客 8563

GC日志分析以及相关基础知识

前言 最近在学习JVM的相关知识,今天来实践一下如何阅读分析GC日志。下面我们来看一个例子,创建1000个60kb大小的对象,将他们添加到list中,设置参数打印出GC,再结合jdk自带的VirsualVM来进行学习分析。我用的是idea,如果是eclipse的话也是大同小异的,方法如下:首先在运行前点击Edit Configurations-->VM options:接着对参数进行设置。...

Hollake的博客 505

golang GC相关调试参数

1. pprof生成CPU和memory profile 前段时间项目中遇到golang程序的性能上不去,想要找到程序的性能瓶颈所在,使用golang自带的pprof输出cpu和mem的profile文件进行分析。 具体如何生成profile文件参考如下: https://golang.org/pkg/runtime/pprof/ https://blog.golang.org/profiling...

辰若寒的博客 1万+

JVM 内存分区及 GC 垃圾回收 相关知识总结

JVM内存分为堆内存和非堆内存,堆内存主要存放对象实例,包括年轻代(Eden区和Survivor区)和老年代。垃圾回收分为Minor GC(年轻代)和Major GC/Full GC(老年代),触发条件分别为对应区域空间不足。频繁GC可能导致应用卡顿,需合理设置-Xms、-Xmx等参数优化内存分配。常见OOM错误如"Java heap space"通常由内存泄漏或大对象分配导致,可通过调整内存大小、分代比例等参数解决。

摩霄志在潜修羽,会接鸾凰别苇丛 1356

累!粗略学习 Minor GC 和 Full GC

20250423主要用于清理年轻代的垃圾,触发频繁但停顿时间短,对性能影响较小这个主要是对新生代进行GC,它采用 复制算法:仅针对(Young Generation),包括 Eden 区和两个 Survivor 区(S0 和 S1)。:清理年轻代中的垃圾对象,将存活对象复制到 Survivor 区或晋升到老年代:当时,会触发 Minor GC。:通常比较频繁,因为年轻代的对象生命周期较短,内存很快会被填满:通常比较快,因为年轻代的内存空间相对较小,且对象生命周期较短,垃圾较多。

2301_80725180的博客 893

JVM GC相关的一些坑

今年遇到了好几次Full GC导致的可用性问题,为了理解这个问题,先深入复习了一下JVM内存管理的工作机制以及常见问题。Google了一下,写的非常有深度,作者也显然是在这个领域有多年实战经验的高手,看完了之后感觉很有收获,所以也share出来给有需要的小伙伴们。

Adam的博客 4万+

android 相关的JVM,GC 知识的扩充

1 JVM 是一种规范 java文件-》编译器-》字节码-》机器码 JAVA虚拟机与JAVA语言并没有直接联系,他只是特定的二进制文件格式.class文件有所关联, CLASS文件中包含JVM虚拟机指令集(bytecodes)和符号表,还有一些其他辅助信息。 java 编译器指令流 是基于栈的指令集架构,而另一种指令集架构为基于寄存器的指令集架构 2 堆的默认大小 默认空间大小: 初始大小:物理电脑内存大小 / 64 最大内存大小:物理电脑内存大小 / 4 3 Mino...

BonnySoul的博客 406

Java底层堆内存、GC等知识点阐述

Java底层 堆内存、GC等知识点阐述

weixin_42512282的博客 1112

java知识:什么是GC?GC调优思路又有哪些

VisualVM是一个功能强大的多合一Java故障诊断和性能监控的可视化工具。它集成了多个JDK命令行工具,同时提供了可视化的界面,使得JVM性能监控和调优变得更加直观和方便。

w1990xw的博客 1851
上一篇: Spring Data JPA实践与学习(十一)
下一篇: 2020-11-30 脑残记录
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值