当前位置: 首页 > news >正文

垃圾回收学习

本次学习的主要内容如下:

  1. 如何判断对象可以回收
  2. 垃圾回收算法
  3. 分代垃圾回收
  4. 垃圾回收器
  5. 垃圾回收调优

JVM采用的可达性分析算法

  • Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象
  • 扫描堆中的对象,看是否能够沿着GC Root对象为起点的引用链找到该对象,找不到,表示可以回收

四种引用

1、强引用

      当没有任何对象跟其有引用时,就会被垃圾回收机制回收

2、软引用

      无强引用引用时,发生垃圾回收后,且发现内存仍然不足,就会被垃圾回收机制回收

3、弱引用

      无强引用引用时,发生垃圾回收,不管内存是否充足,都会被回收掉

4、虚引用

      必须配合引用队列使用,虚拟引用引用的对象被垃圾回收时,虚引用自己就会放入引用队列,而间接的用线程调用虚拟引用对象的方法,调用Unsafe.greeMemory去释放直接内存

5、终结器引用

      必须配合引用队列使用,当其对象被回收时,会将终结器引用加入引用队列,此时其对象还未被垃圾回收,再由FinallizeHandler线程去查看引用队列是否有终结器引用,若有,则会找到对应的对象并且调用其finallize()方法,使其下次垃圾回收时会被回收

垃圾回收算法

标记清楚:第一个阶段先标记哪些可能是垃圾,第二个阶段就是把垃圾占用的空间释放;其优点就是速度快,但是容易导致空间不连续,导致产生内存碎片

标记整理:清理的过程中将可用的对象向前移动,使内存更为紧凑。就不会再产生内存碎片了,但是效率较低

复制:有两个区域FROM和TO,将不被引用的对象标记为垃圾,然后清除,将存活的对象复制到TO区,不会产生碎片但是会占用双倍内存空间

分代回收

主要分为两个大区域:新生代和老年代;经常要使用的对象放在老年代中,而用完就可以删掉的对象放在新生代中

minor gc会引发 stop the world,暂停其他用户的线程,等垃圾回收结束,用户线程才恢复运行;当老年代空间不足,会先尝试触发minor gc,如果之后空间仍不足,那么触发full gc,STW时间更长

 垃圾回收器

1、串行垃圾回收器

      ·单线程

      ·堆内存较小,适合个人电脑

2、吞吐量优先的垃圾回收器

      ·多线程

      ·堆内存较大,多核cpu

      ·让单位时间内,STW的时间最短

3、响应时间优先的垃圾回收器

      ·多线程

      ·堆内存较大,多核cpu

      ·尽可能让单次STW的时间最短

相关文章:

  • “thrust“ has no member “device“
  • 视觉Transformer架构的前沿优化技术与高效部署
  • Linux 驱动总线中的 ACPI 设备匹配机制是怎么回事儿?【最大特点是设备的自动发现和热插拔性能良好】
  • vue 组件开发
  • C++运动控制卡开发实践指南
  • 【pm2运行ts的终极解决方案】使用pm2+ tsx 运行 TypeScript 文件指南
  • 3.25-3 request断言
  • 代码随想录算法训练营第二十天 | 字符串 | 反转字符串、替换空格、翻转字符串里的单词(很多基础方法)和左旋转字符串
  • Windows下docker使用教程
  • 【C++特殊类的设计】
  • 和鲸科技执行总裁殷自强受邀主讲华中附属同济医院大模型应用通识首期课程
  • 美摄科技开启智能汽车车内互动及娱乐解决方案2.0
  • 音乐webpack(通杀webpack-1)
  • 解决在客户端本地无法访问服务器http方式访问麦克风与摄像头的问题
  • Linux如何判断磁盘是否已分区?
  • 基于yolov11的中空圆柱形缺陷检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • (C语言)静态通讯录(正式版)(C语言小项目)
  • HTML5 Geolocation(地理定位)学习笔记
  • 数字化转型1061丨某著名企业新零售云业务中台总体解决方案(文末有下载方式)
  • springboot使用阿里限流框架-sentinel
  • 新西兰做网站代购/seo推广外包
  • 下载网站怎么下载/百度seo推广计划类型包含
  • 软件公司网站建设/全网搜索指数查询
  • 麻辣烫配方教授网站怎么做/百度北京总部电话
  • 宿迁公司做网站/今日最新闻
  • 宁夏网站建设优化/百度一下首页网址