码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM中一次完整的 GC 流程


    JVM中的垃圾回收是自动进行的,它的目标是回收不再使用的对象,释放内存空间,并且保证程序的正常运行。下面是一次完整的GC流程的一般步骤:

    1. 标记阶段:GC从根对象开始,通过根对象的引用链,标记所有可达的对象。根对象包括活动线程的栈帧中的局部变量、静态变量、JNI引用等。
    2. 垃圾标记:在标记阶段完成后,GC会确定哪些对象是垃圾对象,即不可达对象。这些对象将被标记为垃圾,可以被回收。
    3. 垃圾回收:在标记阶段完成后,GC会执行垃圾回收操作,回收被标记为垃圾的对象所占用的内存空间。回收的方式有不同的算法,例如标记-清除、复制、标记-整理等。
    4. 内存整理:在垃圾回收完成后,可能会产生内存碎片。为了提高内存的利用率,GC可能会对内存空间进行整理,将存活的对象紧凑地排列在一起,以便更好地分配新的对象。
    5. 内存分配:在垃圾回收和内存整理完成后,GC会为新的对象分配内存空间。分配的方式有不同的算法,例如指针碰撞、空闲列表等。
    6. 重新分配对象引用:在垃圾回收和内存分配完成后,GC会更新对象之间的引用关系,确保引用指向正确的对象。

    以上是一次完整的GC流程的一般步骤。不同的GC算法和实现可能会有所差异,但整体的流程大致相同。GC的目标是回收垃圾对象,释放内存空间,并且尽量减少对应用程序的影响,保证程序的正常运行。

  • 相关阅读:
    禾匠二开系列之兑换码禁用以后启用功能
    蓝桥杯备赛系列——倒计时50天!
    重要环节不可忽视,CSS性能优化引领用户体验!
    【状态估计】将变压器和LSTM与卡尔曼滤波器结合到EM算法中进行状态估计(Python代码实现)
    html 滤镜效果 黑白
    C++设计模式之装饰者模式(结构型模式)
    Mybatis执行器BatchExecutor、ReuseExecutor、SimpleExecutor介绍
    【经纬恒润】自动驾驶感知算法岗位一面
    一篇文章让你认识React的Mobx!
    Java 查漏补缺
  • 原文地址:https://blog.csdn.net/weixin_44989660/article/details/137261067
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号