`

java的Integer缓存设置

    博客分类:
  • jdk
 
阅读更多
public static void main(String[] args) { 
		   Integer a=200;
		   Integer b=200;
		   System.err.println(a==b);
		} 


一般人会肯定的说结果是false。因为Integer 的缓存范围是-128至127.
但其实127这个数字是可以认为改变的(当然改变的值也不能小于127):
-Djava.lang.Integer.IntegerCache.high=250
当改成250的时候,结果是true了。


对应的jdk的源码:


 static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                int i = parseInt(integerCacheHighPropValue);
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
            }
            high = h;



分享到:
评论

相关推荐

    Java Integer的缓存特性

    项目里遇到的小问题的 整理

    Integer缓存池案例1

    (1)使用句柄:如果使用句柄访问方式, Java 堆中将会划分出一块内存来作为句柄池,reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据

    Java实现的树以及包含树的内存缓存框架

    随手写了一个TreeNode,顺道实现了个对应的内存缓存框架,适用于数据量不大,更新也少但是反复要读的数据,比如模块信息/组织结构/频道栏目/权限等。 PS:Java是可以直接操作内存的,只是现在的框架整合让人退化了。...

    java设计模式【之】享元模式【源码】【场景:多缓存可选模式】

    java设计模式【之】享元模式【源码】【场景:多缓存可选模式】 /** * 享元模式(预加载单例) * “元” 理解为 “同一地址对象” * 运用共享技术,减少对象的创建,降低对象的数量,降低内存消耗,提高性能 * ...

    Integer类的缓存机制

    存在下述例子,判断其输出结果。 public class Main{ public static void main(String[] agrs){ Integer a = 110;...我们知道,在Java中存在基本数据类型和引用数据类型,而Integer作为int的封装类,Integer

    java 整型数与Integer的缓存深入理解

    主要介绍了java 整型数与Integer的缓存深入理解的相关资料,需要的朋友可以参考下

    cyc学习笔记.pdf

    1、Integer缓存池范围-128~127都是同一个地址,在缓存池范围内赋值不会创建新的对象,且不开辟新内存空间。该缓存池由源码Integer.class中的IntegerCache这个私有静态内部类定义。该缓存池与jvm关系是:缓存池创建...

    Java中整型的缓存机制

    本文将介绍Java中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    6.4.2 constant_integer_info表 6.4.3 constant_float_info表 6.4.4 constant_long_info表 6.4.5 constant_double_info表 6.4.6 constant_class_info表 6.4.7 constant_string_info表 6.4.8 ...

    icarus:使用IoC的Little Java缓存框架-WIP

    Icarus是一个可扩展的缓存框架,旨在通过仅添加一些注释来提高新的或现有的性能。 为什么要使用它? 没有任何框架的纯Java代码: final Map< Integer> cache = Maps . newHashMap(); int sum( final int . .. ...

    Java常见面试题208道.docx

    154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理? 155.什么情况会导致 kafka 运行变慢? 156.使用 kafka 集群需要注意什么? 十六、Zookeeper 157.zookeeper ...

    Java面试题-基础和集合.docx

    其中,讨论了Java为什么不支持多继承、==和equals的区别、方法重载的条件、String为何设计成不可变、包装类的应用场景、Integer的高速缓存机制等多个方面。 通过面试题的逐一解答,读者可以了解到Java语言的一些...

    深入Java虚拟机

    6.4.2 CONSTANT_Integer_info表 6.4.3 CONSTANT_Float_info表 6.4.4 CONSTANT_Long_info表 6.4.5 CONSTANT_Double_info表 6.4.6 CONSTANT_Class_info表 6.4.7 CONSTANT_String_info表 6.4.8 ...

    javajdk源码解析-Code-Adventure:Java基础、JDK源码解析、程序人生

    详解Integer的享元缓存机制 JDK探险 | 详解Integer的缓存机制 JDK探秘 | ArrayList的扩容机制 JDK探秘 | String究竟在说什么(上) JDK探秘 | String究竟在说什么(下) JDK探秘 | StringBuilder 究竟有什么用 程序...

    java面试题

    1. int 和 Integer 有什么区别? 8 2. String 和StringBuffer的区别 8 3. 运行时异常与一般异常有何异同? 8 4. 说出ArrayList,Vector,LinkedList的存储性能和特性 8 5. EJB是基于哪些技术实现的?并说出SessionBean...

    深入java虚拟机第二版

    6.4.2 CONSTANT_Integer_info表 6.4.3 CONSTANT_Float_info表 6.4.4 CONSTANT_Long_info表 6.4.5 CONSTANT_Double_info表 6.4.6 CONSTANT_Class_info表 6.4.7 CONSTANT_String_info表 6.4.8 CONSTANT_...

    Java面试宝典-经典

    14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和...

    Java面试宝典2010版

    14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和...

    深入JAVA虚拟机(第2版)

    6.4.2 CONSTANT_Integer_info表 6.4.3 CONSTANT_Float_info表 6.4.4 CONSTANT_Long_info表 6.4.5 CONSTANT_Double_info表 6.4.6 CONSTANT_Class_info表 6.4.7 CONSTANT_String_info表 6.4.8 ...

Global site tag (gtag.js) - Google Analytics