• 关于int和Integer缓存(二):修改缓存大小


    续上文:

    java中的基础数据类型长度是否取决于操作系统?

    在一些语言中,数据类型的长度是和操作系统有关系的,比如c和c++;

    但是在java中,java的基础类型长度都是固定的,都是4个字节。
    因为java不是直接运行在本地操作系统上的,而是运行在JVM上的,JVMJ保证class文件在不同的操作系统上稳定;这也是java跨平台的一点。

     

    首先查看我的java version:


    发现以及是server版的了,是混合模式(关于混合模式理解,可以查看):


    Integer默认的是[-128, 127]的缓存范围,之前我们查看源码的时候也发现了,其中的low的下限是最开始的时候就固定死了的 final int low = -128;
    而其中的high虽然是设置了final int的,但是最初的时候,是还没有赋值的所以我们可以通过设置java 的时候的参数来配置运行时的参数:

    java -D java.lang.Integer.IntegerCache.high=1000 TestAutoBoxCache

    java -XX:AutoBoxCacheMax=1000 TestAutoBoxCache 

    其中都可以跟上 -server参数,也可以不跟!(因为我默认的是server版的jdk)

     

    其中我的测试代码:

    /**
     * 测试Integer的缓存上限修改:
     * (不过请注意:一旦你修改了缓存上限,都存到了常量池中,加大了内存的负担)
     * gc是没有办法回收的!!AutoBoxCacheMax
     * 
     * @author mzy
     *
     */
    public class TestAutoBoxCache {  
        public static void main(String[] args) {  
    	Integer a = 127;  
            Integer b = 127;  
            System.out.println(a == b);
    		
    	Integer c = 128;  
            Integer d = 128;  
            System.out.println(c == d);
    		
            Integer e = 1000;  
            Integer f = 1000;  
            System.out.println(e == f);  
              
            Integer g = 1001;  
            Integer h = 1001;  
            System.out.println(g == h);  
              
            Integer i = 20000;  
            Integer j = 20000;  
            System.out.println(i == j);  
        }  
    }  

    运行结果,运行测试,(以下是在命令行中测试,也可以在IDE中进行,如eclipse中配置run as->run congratulations->arguments):

     

    运行上面的代码,参数不同,结果不同:




    参考,感谢!

    http://rednaxelafx.iteye.com/blog/680746
    http://www.iteye.com/topic/857587
    https://blog.csdn.net/wang0112233/article/details/78641951

  • 相关阅读:
    LinuxMySQL主从复制原理图
    flask中间件请求流程
    flask02
    flask01
    笔记本电脑播放声音前后会有吱吱声
    筛法欧拉函数
    矩阵快速幂
    最短路 P1144 最短路计数【Dijkstra堆优化/SPFA】
    SPFA算法以及负环判断【模板】
    最短路 P1629 邮递员送信 【反向图求最短路】
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053406.html
Copyright © 2020-2023  润新知