应避免循环中频繁自动装箱,因其调用integer.valueof()对超[-128,127]范围值新建对象,加重gc压力;优先用int[]或原始类型集合库;必要时复用integercache内实例,警惕隐式装箱拆箱。

避免在循环中频繁触发自动装箱
自动装箱本质是调用 Integer.valueOf() 等方法,而该方法对超出 [-128, 127] 范围的值会新建对象。循环中反复装箱(如向 List<integer></integer> 添加大量 int 值),会持续创建包装类实例,加重 GC 压力,拖慢执行速度。
优先使用基本类型数组或原始类型集合
若逻辑允许,绕过泛型集合限制:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 用
int[]替代List<integer></integer>存储和遍历——无装箱、内存连续、CPU 缓存友好 - 必要时选用 Agrona、Koloboke 或 Eclipse Collections 等支持原始类型的集合库,避免泛型擦除带来的装箱开销
显式复用缓存范围内的 Integer 实例
若必须用 Integer,且数值集中在小整数区间:
- 直接使用字面量赋值(如
Integer i = 100;),JVM 会命中IntegerCache - 避免
new Integer(100)—— 它总是新建对象,绕过缓存 - 对范围外的值,考虑预分配并复用固定对象池(仅在极端高频场景下权衡)
检查循环体是否隐含装箱操作
常见陷阱包括:
-
list.add(i)中i是int,但list是List<integer></integer>→ 触发装箱 -
map.put(key, i)若key是Integer,而i是int→ 不装箱;但若i是Integer,又参与算术(如i + 1),先拆箱再装箱 - 增强 for 遍历
List<integer></integer>并赋给int变量 → 每次迭代都发生一次拆箱,虽快但叠加后可观
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










