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

软引用的使用场景-链路日志

我司自研的链路系统中的agent层记录日志时,使用的是异步打印日志的机制。异步打印会使用队列,现将待打印的日志对象,记录在队列中。
但这块的日志,为了不影响业务,例如不能因为链路记录的日志过多,导致业务应用oom,使用了软引用

BlockingQueue<SoftReference<SCLogEvent>> loggingQueue = new ArrayBlockingQueue<SoftReference<SCLogEvent>>(10000); // 异步队列SoftReference<SCLogEvent> le = loggingQueue.take();SCLogEvent logEvent = le.get();if (null != logEvent) {...} else {// 软引用对象被回收}
  • 强引用:强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它
  • 软引用:如果一个对象只具有软引用,则内存空间充足时,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用
  • 弱引用:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。
  • 虚引用:虚引用顾名思义,就是形同虚设。与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
http://www.lryc.cn/news/143055.html

相关文章:

  • 【java】【项目实战】[外卖七]手机短信开发
  • Web 开发 Django 模板
  • 动态可编辑表单项
  • 【Docker入门第一篇】
  • 数据集收集列表(opencv,机器学习,深度学习)持续更新
  • springboot整合rabbitmq发布确认高级
  • 【linux命令讲解大全】010. mapfile命令和tempfile命令的用法及示例
  • 在 Python 中构建卷积神经网络; 从 0 到 9 的手绘数字的灰度图像预测数字
  • 前端分页处理
  • 【C语言】位操作符的一些题目与技巧
  • 爬虫逆向实战(二十二)--某恩数据电影票房
  • 火山引擎发布自研视频编解码芯片
  • 投递技术类简历的注意事项
  • 每日一题——柱状图中最大的矩形
  • Banana Pi推出基于龙芯2K1000LA处理器的信创工业控制开发平台
  • springCloud整合Zookeeper的时候调用找不到服务
  • 【kubernetes】使用kubepshere部署中间件服务
  • 如何从tabbar页面传数据
  • 软考高级系统架构设计师系列论文七十四:基于构件的软件开发
  • 图为科技_边缘计算在智能安防领域的作用
  • Android 13 - Media框架(7)- NuPlayer::Source
  • MySql015——使用子查询
  • leetcode 355 设计推特
  • 倒数 2 周|期待 2023 Google开发者大会
  • 代码随想录day57
  • YOLOv5、v8改进:CrissCrossAttention注意力机制
  • RabbitMQ特性介绍和使用案例
  • Ansible 使用 RHEL 系统角色
  • 重新认识Android中的线程
  • 前端(十五)——GitHub开源一个react封装的图片预览组件