news 2026/5/8 21:39:45

Java 内存泄漏原因(长生命周期的对象持有短生命周期对象的引用、未正确关闭资源等)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 内存泄漏原因(长生命周期的对象持有短生命周期对象的引用、未正确关闭资源等)

Java 内存泄漏原因

  1. 长生命周期的对象持有短生命周期对象的引用:例如,静态集合不断添加对象而不清理
privatestaticfinalList<byte[]>cache=newArrayList<>();voidadd(){cache.add(newbyte[1024*1024]);}
  1. 未正确关闭资源:例如,数据库连接、文件流、网络连接未关闭
FileInputStreamfileInputStream=null;try{fileInputStream=newFileInputStream("target.txt");}catch(IOExceptione){e.printStackTrace();}
  1. 内部类持有外部类引用:非静态内部类持有外部类实例,若内部类生命周期更长,会导致外部类无法释放
publicclassOuter{privateStringvalue="Outer";classInner{voidprint(){System.out.println(value);}@Overrideprotectedvoidfinalize()throwsThrowable{System.out.println("Inner 对象被回收");super.finalize();}}@Overrideprotectedvoidfinalize()throwsThrowable{System.out.println("Outer 对象被回收");super.finalize();}}
publicclassTest{publicstaticvoidmain(String[]args){Outerouter=newOuter();Outer.Innerinner=outer.newInner();inner.print();System.out.println("----- outer 被设置为 null");outer=null;System.gc();try{Thread.sleep(10*1000);}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("----- inner 被设置为 null");inner=null;System.gc();try{Thread.sleep(10*1000);}catch(InterruptedExceptione){e.printStackTrace();}}}
# 输出结果 Outer ----- outer 被设置为 null ----- inner 被设置为 null Inner 对象被回收 Outer 对象被回收
  1. 不合理的作用域:将局部变量提升为静态变量,意外延长对象生命周期

  2. 监听器或回调未注销:注册了监听器或回调,但是缺少移除方法

  3. ThreadLocal 使用不当:例如,线程池的线程复用时,ThreadLocal 未及时调用 remove 方法,导致数据残留

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 1:22:55

开发智能体调试与预览---真机测试

1、开发者可在智能体调试与预览区域&#xff0c;点击真机测试图标-点击【白名单】跳转至智能体白名单配置页面。 2、勾选用于测试的群组&#xff0c;点击屏幕左侧【编排】返回智能体编排页面进行真机测试发布。若无可用真机调试用户组&#xff0c;开发者需要创建一个用户组并添…

作者头像 李华
网站建设 2026/4/30 14:30:48

【必藏】基于RAG技术的智能客服系统业务架构图详解

本文详细介绍了基于RAG技术的智能客服系统业务架构图&#xff0c;展示了客服用户、知识管理员和系统管理员三大角色及其交互用例。系统包含用户查询、知识检索与生成、知识库更新、系统配置和性能监控五大功能模块&#xff0c;其中知识检索与生成模块采用RAG技术从本地知识库检…

作者头像 李华
网站建设 2026/5/2 3:21:22

SGMICRO圣邦微 SGM61630BXPS8G/TR SOIC-8(Exposed Pad) 线性稳压器(LDO)

特性• 4.3V 至 60V 输入范围 • 3A 连续输出电流 • 超低 50μA 工作静态电流 • 140mΩ 高侧 MOSFET • 最小开启时间&#xff1a;100ns • 电流模式控制 • SGM61630A&#xff1a;软启动版本 • SGM61630B&#xff1a;电源良好版本 • 可调开关频率从 200kHz 到 2500kHz • …

作者头像 李华
网站建设 2026/5/3 3:41:59

频繁跳槽真的比稳定工作的人差吗?

前几日在在电梯里听见的谈论&#xff1a; “你这几年换了三份工作啊&#xff1f;” “嗯。” “厉害……也有点飘。” 电梯门一合&#xff0c;扣好“草率”的标签&#xff0c;一整天都刮着风。 与其争辩&#xff0c;不如换个叙述方式。今天不讲数据&#xff0c;讲一个三幕小剧…

作者头像 李华