尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

生命周期长的集合

生命周期长的集合
📅 发布时间:2026/6/30 16:40:35

将对象放入静态或生命周期很长的集合(如 publicstaticList<Object> list = new ArrayList<>();),即使后面不再需要,集合仍持有其引用,导致无法GC。

2、未关闭的资源

连接、流等资源未调用close()方法关闭。这些资源不仅占用内存,还可能占用文件句柄(操作系统分配的唯一标识,凭它,你才能操作文件资源)、网络连接等系统资源。比如 数据库连接、文件流(FileInputStream)、Socket连接 等。

public class FileTest { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("test.txt"); // 读取文件,未调用 fis.close() } catch (FileNotFoundException e) { e.printStackTrace(); } finally { // 未调用 fis.close() → fis 持有 Native 引用,无法回收 } } }

3、ThreadLocal 使用不当

将对象存入ThreadLocal后,未在后续调用remove()清理。若线程来自线程池(会复用),其 ThreadLocalMap 中的值会一直存活。

public class ThreadLocalTest { private static ThreadLocal<User> userThreadLocal = new ThreadLocal<>(); public static void main(String[] args) { // 线程池(核心线程长期存活) TThreadPoolExecutor executor = new ThreadPoolExecutor( 2, 4, 10, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), new ThreadFactoryBuilder().setNameFormat("my-thread-pool-%d").setDaemon(false).setPriority(Thread.NORM_PRIORITY).build(), new ThreadPoolExecutor.AbortPolicy() ); executor.submit(() -> { User user = new User("李四", 30); userThreadLocal.set(user); // 存储到 ThreadLocal // 业务执行完毕,未调用 remove() // 核心线程不会销毁,ThreadLocal 仍持有 user 引用 }); } }

ps:未进行remove(),还可能会导致ThreadLocal取值串门。

4、内部类与外部类引用

非静态内部类(或匿名类)会隐式持有外部类的引用。如果内部类实例生命周期更长(如被缓存或另一个线程引用),会阻止外部类被回收。

public class OuterClass { private byte[] bigData = new byte[1024 * 1024 * 10]; // 10MB 大对象 // 非静态内部类 class InnerClass { // 内部类隐式持有 OuterClass 引用 } public InnerClass createInner() { return new InnerClass(); } public static void main(String[] args) { OuterClass outer = new OuterClass(); InnerClass inner = outer.createInner(); // 置空外部类引用,但 inner 仍持有 outer 引用 outer = null; // 若 inner 被静态变量/线程长期持有 → outer 对象(含 bigData)无法回收 } }

5、 监听器与回调

相关新闻

  • 互联网大厂 Java 求职面试:核心技术与业务场景的深度探讨
  • Windows系统文件adsldpc.dll丢失找不到问题解决
  • 每年千亿补贴留不住乘客,公交票价改革根本不是涨价游戏

最新新闻

  • 用STM32F103和OpenMV做个快递小车:从硬件选型到PID调参的避坑实录
  • 性能测试工具选型指南:LoadRunner、JMeter与Locust深度对比
  • 首批_国家级_时序数据库诞生:DolphinDB 走过的那道门槛
  • 3分钟搞定:Postman便携版,让API测试摆脱安装束缚
  • 每周AI新动态:GLM 5.2、gpt-oss与Qwen-AgentWorld发布
  • 红外热成像仪详细功能解析,测温成像测距一机搞定

日新闻

  • 【计算机毕业设计案例】基于 Spring Boot+Vue 的电影售票系统设计与实现 前后端分离架构下影院在线购票管理平台(程序+文档+讲解+定制)
  • 到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦
  • Google限制Meta使用Gemini模型 凸显AI授权竞争白热化

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号