在 Java 中Integer类的缓存也叫享元模式是为了优化小整数的创建性能默认缓存范围是[-128, 127]。你可以通过调整 JVM 参数来修改缓存的上限下限-128固定不可改下面我会详细说明具体方法和原理。一、修改 Integer 缓存大小的方法1. 核心原理Integer的缓存由IntegerCache内部类实现其缓存上限默认是127但可以通过 JVM 参数java.lang.Integer.IntegerCache.high自定义。注意下限-128是硬编码的无法修改上限只能增大比如设为 256、500不能小于 127否则仍会使用 127该参数仅对通过Integer.valueOf()创建的对象生效new Integer()会直接新建对象不使用缓存。2. 具体操作步骤1运行时指定 JVM 参数在启动 Java 程序时添加以下参数调整缓存上限示例将上限设为 256bash运行java -Djava.lang.Integer.IntegerCache.high256 你的主类名2代码验证缓存是否生效下面的代码可以验证缓存是否生效对比不同上限下的对象地址java运行public class IntegerCacheTest { public static void main(String[] args) { // 测试 127默认缓存 Integer a Integer.valueOf(127); Integer b Integer.valueOf(127); System.out.println(127 是否来自缓存 (a b)); // true // 测试 128默认不缓存修改参数后缓存 Integer c Integer.valueOf(128); Integer d Integer.valueOf(128); System.out.println(128 是否来自缓存 (c d)); // 默认输出 false设置 -Djava.lang.Integer.IntegerCache.high256 后输出 true } }3. 特殊场景IDE 中配置 JVM 参数如果你用 IDEA/Eclipse 运行代码需要在运行配置中添加参数IDEARun/Debug Configurations → VM options → 输入-Djava.lang.Integer.IntegerCache.high256EclipseRun → Run Configurations → Arguments → VM arguments → 输入上述参数。二、注意事项仅对 valueOf () 生效new Integer(n)会绕过缓存直接创建新对象即使 n 在缓存范围内性能权衡缓存上限设置过大比如 10000会占用更多内存需根据实际需求调整比如业务中频繁使用 0-200 的整数可设为 200兼容性该参数是 Java 官方认可的所有主流 JDKOracle JDK、OpenJDK都支持。总结Integer缓存默认范围是[-128, 127]可通过 JVM 参数java.lang.Integer.IntegerCache.high修改上限下限固定调整参数的方式是启动程序时添加-Djava.lang.Integer.IntegerCache.high自定义值缓存仅对Integer.valueOf()生效new Integer()不使用缓存且缓存上限不宜过大避免内存浪费。