任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存【示例】

正确示例:指定初始容量

java 复制代码
// ArrayList - 指定初始大小
List<String> list = new ArrayList<>(1000); // 预计存储1000个元素

// HashMap - 指定初始容量和负载因子
Map<String, User> map = new HashMap<>(500, 0.75f); // 初始500,负载因子0.75

// StringBuilder - 指定初始缓冲区大小
StringBuilder sb = new StringBuilder(1024); // 预分配1KB空间

错误示例:未指定大小

java 复制代码
List<String> list = new ArrayList<>(); // 默认容量10,频繁扩容
Map<String, User> map = new HashMap<>(); // 默认16,可能快速扩容
StringBuilder sb = new StringBuilder(); // 默认16,频繁扩容复制

后果: 未指定大小时,数据结构会频繁自动扩容(2倍增长),产生大量内存复制和碎片,严重时耗尽内存。

相关推荐
Derek_Smart1 分钟前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP1 小时前
MyBatis-mybatis入门与增删改查
java
孟陬4 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌4 小时前
一站式了解四种限流算法
java·后端·go
华仔啊5 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java
也些宝6 小时前
Java单例模式:饿汉、懒汉、DCL三种实现及最佳实践
java
Nyarlathotep01136 小时前
SpringBoot Starter的用法以及原理
java·spring boot
wuwen56 小时前
WebFlux + Lettuce Reactive 中 SkyWalking 链路上下文丢失的修复实践
java
SimonKing7 小时前
GitHub 10万星的OpenCode,正在悄悄改变我们的工作流
java·后端·程序员