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

jvm垃圾回收笔记


JVM基础知识笔记

1. 垃圾回收相关算法

标记清除-标记整理-复制 这三个看上面的文章

1.1 分代收集算法

将不同生命周期的对象采用不同的收集方式,以便提高回收效率,一般是将Java堆分为新生代和老年代,这样可以根据各个年代的特点使用不同的回收算法,提高垃圾回收效率

1.1.1 增量收集算法

标记清除-标记整理-复制 这三种算法在垃圾回收过程中,用户线程将处于 STW 状态,如果垃圾回收时间过长将严重影响用户体验
增量收集算法基本思想
垃圾收集线程只收集一小片区域的内存空间,接着切换到用户线程执行,依次反复,直到垃圾收集完成
总的来说,增量收集算法的基础仍是传统的标记清除,复制算法,增量收集算法通过对线程间冲突的妥善处理,允许垃圾收集线程以分阶段的方式完成标记、清理或复制工作

1.1.2 分区算法

堆空间越大,一次GC时间就越长,为了更好的控制GC产生的停顿时间,将一块打的内存区域分割成多个小块,根据目标的停顿时间,每次合理地回收若干个小区间,而不是整个堆空间,从而减少一次GC所产生的停顿
分区算法将按照对象的生命周期长短划分成两个部分,分区算法将整个堆空间划分成连续的不同小区间,每一个区间独立使用,独立回收。这种算法的好处是可以空间一次回收多个小区间

2 垃圾回收相关概述

2.1 System.gc()的理解

  • 通过System.gc() 或 Runtime.getRuntime().gc()的调用,会显示触发Full GC,同时对老年代和新生代进行回收
  • 然而 System.gc() 调用附带一个免责声明,无法保证对垃圾收集器的调用

2.2 内存溢出与内存泄漏

  1. 内存溢出: OUtOfMemoryError,没有空闲内存,并且垃圾收集器也无法提供更多内存
    1. Java虚拟机的堆内存设置不够
    2. 代码中大量创建了大对象,并且长时间不能被垃圾收集器收集(存在被引用)
  2. 内存泄漏:只有对象不被程序用到了,但GC又不能回收他们的情况,才叫内存泄漏
    一旦发生内存泄漏,直到耗尽所有的内存,最终出现OOM异常,导致程序崩溃,
    在这里插入图片描述

2.3 Stop The World

2.4 垃圾回收的并行与并发

2.5 安全点与安全区域

2.6 强引用

2.7 软引用

2.8 弱引用

2.9 虚引用

2.x 终结器引用

相关文章:

  • 怎么做百度seo网站/雅思培训班价格一览表
  • 2018网站如何做seo/网销怎么找客户资源
  • 网站弹出信息怎么做的/网站排名系统
  • wordpress发送失败/怎么引流推广
  • 油漆工找活做的网站/新品牌推广策略
  • 深圳网站建设zvge/山西seo关键词优化软件搜索
  • 跨平台API对接(Python)的使用
  • Vue知识系列-axios
  • 【Linux】supervisor创建守护进程
  • 惊艳的产品背后,是锐利的设计思维
  • Notion 汉化Macwindows客户端
  • 绝了,超越YOLOv7、v8,YOLOv6 v3.0正式发布
  • Dubbo调用
  • CSC|2023年艺术类人才培养特别项目解读及建议
  • DFS的树上应用
  • Day861.Actor模型 -Java 并发编程实战
  • IDEA常用配置整理说明
  • ”凌寒独自开“绽放不一样的自己