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

十六、垃圾回收相关概念

目录

    • 一、System.gc()的理解
    • 二、内存溢出和内存泄漏
      • 2、内存泄漏
    • 三、Stop the World
      • 1、什么是 stop the word ?
    • 四、垃圾回收的并行和并发
      • 1、并发和并发
      • 2、垃圾回收的并行和并发
    • 五、安全点与安全区域
      • 1、什么是安全点?
      • 2、安全区域
    • 六、强引用(不可回收)
    • 七、软引用(Soft Reference 内存不足即回收)
    • 八、弱引用(Weak Reference 发现即回收)
    • 九、虚引用(Phantom Reference 对象回收跟踪)
    • 十、终结器引用(Final Reference)

一、System.gc()的理解

显示触发FullGC

二、内存溢出和内存泄漏

Javadoc中对于OutOfMemoryError的解释是,没有空闲内存,并且垃圾收集器也无法提供更多的内存

2、内存泄漏

只有对象不再被应用程序使用到了,但是GC又不能回收他们的情况,才叫内存泄漏

三、Stop the World

1、什么是 stop the word ?

四、垃圾回收的并行和并发

1、并发和并发

2、垃圾回收的并行和并发

五、安全点与安全区域

1、什么是安全点?

程序执行的时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为安全点(SafePoint)

SafePoint 的选择很重要

2、安全区域

安全区域是指在一段代码片段中,对象的引用关系不会发生变化,在这个区域中的任何位置开始GC都是安全的

六、强引用(不可回收)

七、软引用(Soft Reference 内存不足即回收)

软引用是用来描述一些还有用,但非必须的对象。

        //创建对象,建立软引用
//        SoftReference<User> userSoftRef = new SoftReference<User>(new User(1, "songhk"));//上面的一行代码,等价于如下的三行代码User u1 = new User(1,"songhk");SoftReference<User> userSoftRef = new SoftReference<User>(u1);u1 = null;//取消强引用

八、弱引用(Weak Reference 发现即回收)

弱引用也是用来描述那些非必需的对象,只被弱引用关联的对象只能生存到下一次垃圾收集发生为止

九、虚引用(Phantom Reference 对象回收跟踪)

也称为"幽灵引用"或者"幻影引用",是所有引用类型中最弱的一个

一个对象是否有虚引用的存在,完全不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它和没有引用几乎是一样的,随时可能被垃圾回收器回收。

为一个对象设置虚引用的唯一目的在于跟踪垃圾回收过程,比如:能在这个对象被收集器回收时收到一个系统通知

十、终结器引用(Final Reference)

http://www.lryc.cn/news/170578.html

相关文章:

  • hive、spark、presto 中的增强聚合-grouping sets、rollup、cube
  • elasticsearch bulk 批量操作
  • 力扣11、 盛最多水的容器
  • IIC协议详解
  • element ui-表头自定义提示框
  • Python 图形化界面基础篇:创建顶部菜单
  • java实现十大排序算法
  • Linux日志管理-logrotate(crontab定时任务、Ceph日志转储)
  • 用PHP异步协程控制python爬虫脚本,实现多协程分布式爬取
  • VUE3写后台管理(3)
  • 机器学习笔记之最优化理论与算法(十二)无约束优化问题——共轭梯度法
  • JVM中的java同步互斥工具应用演示及设计分析
  • 数据治理-数据质量
  • [sqoop]hive3.1.2 hadoop3.1.1安装sqoop1.4.7
  • js事件的详细介绍
  • 虚幻4学习笔记(12)操控导入的角色、动画蓝图、播放蒙太奇和打包、角色重定向
  • hive with tez:无法从链中的任何提供者加载aws凭据
  • Ubuntu修改静态IP、网关和DNS的方法总结
  • Eureka服务器注册
  • Windows安装GPU版本的pytorch详细教程
  • 理解Kruskal算法的前提----深入理解并查集【超简单~】
  • Jenkins+Gitee+Docker+Ruoyi项目前后端分离部署
  • 笙默考试管理系统-MyExamTest----codemirror(23)
  • 重学Java (一) 泛型
  • Docker 部署 Redis 服务
  • 阿里云产品试用系列-负载均衡 SLB
  • drf 对象级权限
  • 八大排序(二)--------冒泡排序
  • SmartSQL 一款开源的数据库文档管理工具
  • 代码随想录算法训练营第56天 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 动态规划之编辑距离总结篇