Java GC基本算法

操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】 首次适应算法(First Fit)、 最佳适应算法(Best Fit)、 最坏适应算法(Worst Fit)【又称“最大适应算法”(Largest Fit)】、 临近适应算法(Next Fit) 阅读详情

1、引用计数(reference counting)
    原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。
    
缺点:无法处理循环引用的问题。如:
对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是引用计数算法却无法回收他们。 

2、复制(copying)
    原理:把内存空间划分为2个相等的区域,每次只使用一个区域。垃圾回收时,遍历当前使用区域,把正在使用的对象复制到另外一个区域。
    优点:不会出现碎片问题。
    缺点:1、暂停整个应用。2、需要2倍的内存空间。

3、
标记-清扫(Mark-and-sweep)---sun前期版本就是用这个技术。
    原理:对于“活”的对象,一定可以追溯到其存活在堆栈、静态存储区之中的引用。这个引用链条可能会穿过数个对象层次。第一阶段:从GC roots开始遍历所有的引用,对有活的对象进行标记。第二阶段:对堆进行遍历,把未标记的对象进行清除。这个解决了循环引用的问题。
    缺点:1、暂停整个应用;2、会产生内存碎片。

4、
标记-压缩(Mark-Compact)自适应
    原理:第一阶段标记活的对象,第二阶段把为标记的对象压缩到堆的其中一块,按顺序放。
    优点:1、避免标记扫描的碎片问题;2、避免停止复制的空间问题。
    
    
具体使用什么方法GC,Java虚拟机会进行监视,如果所有对象都很稳定,垃圾回收器的效率低的话,就切换到“标记-扫描”方式;同样,Java虚拟机会跟踪“标记-扫描”的效果,要是堆空间碎片出现很多碎片,就会切换回“停止-复制”模式。这就是自适应的技术。

5、分代(generational collecting)
-----J2SE1.2以后使用此算法
    原理:基于对象生命周期分析得出的垃圾回收算法。把对象分为年轻代、年老代、持久代,对不同的生命周期使用不同的算法(2-3方法中的一个即4自适应)进行回收。


如上图所示:为Java的各代分布图
年轻代(young)
    分为3个区。一个Eden区,2个survivor区。大部分对象在Eden中生成。当Eden区满时,还存活的对象将被复制到survivor区。当该survivor区满时,此区的存活对象被复制到另外一个survivor区,当第2个survivor区也满时,该区还存活的对象将被复制到年老区(tenured)。

年老代(tenured)
   存放从年轻代(young)复制过来的对象。

持久代(perm)
    用于存放静态文件,如Java类、方法等。持久代对垃圾回收没有显著的影响,但是有些应用可能动态生成或者调用一些class。持久代大小通过
-XX:MaxPermSize=N进行设置

Thinking in java给java gc取了一个罗嗦的称呼:“自适应、分代的、停止-复制、标记-扫描”式的垃圾回收器。

导致Gc的情况:
1、tenured被写满
2、perm被写满
3、System.gc()的显式调用。
4、上一次GC之后heap的各域分配策略动态变化。

JAVA垃圾回收(GC)算法 GC算法前言GC算法二、使用步骤1.引入库2.读入数据总结 前言 什么是GC: GC:Garbage Collection(垃圾回收)找到内存空间的垃圾,回收垃圾。 GC算法 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') im 阅读详情

相关推荐

Gerrit 使用操作手册

Gerrit是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(GerritRietveld),作者为Google公司的ShawnPearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利用网页浏览器,同一个团队的软件程序员,可以相互审核(Review)彼此修改后的程序代码,然后决定是继续提交还是取消提交。...

九离的博客 1万+

JVM学习之:GC的算法简述

Java GC基本算法 1、引用计数(reference counting)     原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。      缺点:无法处理循环引用的问题。如: 对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是引用计数算法却无法回收他们。 

jerryHH_2012的专栏 696

基于JAVA的GB28181实现之SIP服务核心组件解析

本文深入解析了基于JAVA的GB28181标准中SIP服务的核心组件实现,包括协议栈选择、消息处理引擎、事务管理器等关键技术点。通过实战案例分享海康威视、大华设备的特殊处理技巧,并提供性能优化和常见问题排查指南,帮助开发者高效构建稳定的视频监控系统。

weixin_30892037的博客 264

3.1.5 操作系统之动态分区分配的四种算法(首次适应算法、最佳适应算法、最坏适应算法、临近适应算法)

文章目录0.思维导图1.首次适应算法2.最佳适应算法3.最坏(大)适应算法4.临近适应算法5.四种算法归纳比较 0.思维导图 本篇文章是对上一篇文章内存的分配与回收提到的动态分区分配算法的补充 1.首次适应算法 2.最佳适应算法 3.最坏(大)适应算法 4.临近适应算法 5.四种算法归纳比较 ...

BitHachi 3万+

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7172

LiteOS | 基于LiteOS的智慧农业案例实验分享

分享一个基于小熊派+LiteOS+华为云的案例实验(智慧农业)。 实验框图 相关模块简介 1、STM32L431RCT6 2、LiteOS LiteOS是华为开发的轻量级实时操作系统: LiteOS源码GitHub仓库链接: https://github.com/LiteOS/LiteOS 其源码一级目录结构如下: 其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管...

嵌入式大杂烩 5992

GC 算法

GC算法指的是垃圾收集(Garbage Collection)算法,它是计算机科学中自动内存管理的一种形式。在编程语言中,特别是那些自动管理内存的语言 java,垃圾收集器负责自动检测不再使用的内存,并将其释放以供后续使用。这避免了手动管理内存可能导致的内存泄漏等问题。

junxinsiwo的专栏 1431

期权专题9:雪球期权(一)(BSM+蒙特卡罗定价)

python;雪球定价;蒙特卡罗

mhmh123789的博客 8105

java GC 基本算法总结

Java GC基本算法 1、引用计数(reference counting)     原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。      缺点:无法处理循环引用的问题。如: 对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是引用计数算法却无法回收他们。 

D_ker的专栏 569

Android SystemUI——自定义状态栏和导航栏(十二)

通过前面的文章内容,我们了解了Android系统原生的状态栏StatusBar和车载系统状态栏CarStatusBar的启动流程以及视图构建流程,这里我们来简单的看一下自定义状态栏和导航栏视图的实现流程。

小旭的专栏 2012

绕过Cloudflare的两种简便方案

绕过Cloudflare的两种简便方案

自成背后的博客 1万+

【转】Java GC基本算法

原文地址:http://blog.youkuaiyun.com/heyutao007/article/details/381515811、JVM内存组成结构 JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,Surviv

feixue35800的博客 334

ESP32 VSCode开发环境配置

ESP32 VSCode开发环境配置

qq_53529450的博客 511
上一篇: ZKFailoverController( zkfc)介绍
下一篇: Oracle中NVL2 和NULLIF的用法
rtnull
博客等级 码龄16年 5粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值