码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java垃圾回收基础


    JRE:
    JVM,Java platporm core classes, supporting Java platform libraries.

    性能指标:
    相应能力,吞吐量

    jvm的主要组件
    包括:类加载器,运行时数据区,执行引擎,
    高亮的组件时和jvm性能相关:Heap:存放对象的地方。Jit编译器对性能也有很大的影响,但很少可以调整。Garbage Collector的合理选择对性能影响很大。
    在这里插入图片描述

    Garbage Collector
    过程:
    1,mark,将未被引用的对象进行标记,图中黄色的表示标记了的对象。
    在这里插入图片描述

    2a,delete,清理未被引用的对象,
    在这里插入图片描述

    2b,delete with compacting,删除压缩。为了提升性能,可以将其余的对象压缩到一起,这样接下来分配内存就会更快和更容易。
    在这里插入图片描述

    为什么需要进行分代垃圾收集?
    就像之前说得,垃圾清理,通过标记清理是很低效的。随着分配的对象越来越多,导致垃圾回收时间越来越长,stw的时间会很长,性能越来越差。然后通过大量的经验,大多数对象的存活时间是很短的。所以需要进行分代垃圾处理。

    jvm中堆的拆分
    the heap is broken up into smaller parts or generations. The heap parts are: Young Generation, Old Generation, and Permanent Generation.
    Young Generation 分为3parts:eden,Survivor “from”,Survivor “to”。
    在这里插入图片描述

    垃圾回收过程
    1,首先,所有新建的对象都被分配空间在eden区。
    在这里插入图片描述

    2,当eden区被填满之后,就会进行一次Minor Garbage Collection。
    在这里插入图片描述

    3,将Eden所有未被引用的对象清除后,将Eden区剩下的对象,移动到Survivor区其中一个,如:S0,并给对象一个年龄1.
    在这里插入图片描述

    4,当Eden区再次被填满的时候,进行下一次Minor GC。将Eden区和S0区所有未被引用的对象清除后,再将这2各区剩下的对象移动到S1,所有对象加一岁。
    在这里插入图片描述

    5,在下一次Minor GC的时候,当Survivor区的对象达到了某个年龄如:8的时候,就会被移动到Old Generation中。
    在这里插入图片描述

    6,当Old Generation被填满的时候,就会进行一次Major GC,清理并压缩该控件。
    在这里插入图片描述

    可视GC插件
    打开如下文件,安装Visual GC插件,即可。
    在这里插入图片描述

    效果图:

    在这里插入图片描述

  • 相关阅读:
    打造千万级流量秒杀第十六课 漏斗模型:如何将并发流量过滤和串行化?
    软件测试——基础理论知识你都不一定看得懂
    [GIT]版本控制工具
    若依前后端分离版入门
    【批处理DOS-CMD命令-汇总和小结】-CMD窗口的设置与操作命令(cd、title、mode、color、pause、chcp、exit)
    Java版B/S架构云his医院信息管理系统源码(springboot框架)
    如何进行项目管理?
    力扣739:每日温度 (Java多种方法)
    [附源码]计算机毕业设计JAVA电子交易平台
    redis的5种数据类型
  • 原文地址:https://blog.csdn.net/Edward_hjh/article/details/127108872
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号