续上文:

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

关于int和Integer缓存(二):修改缓存大小的更多相关文章

  1. 一、基础篇--1.1Java基础-int 和 Integer 有什么区别,Integer的值缓存范围

    int和Integer的区别 int是基本数据类型,Integer是int的包装类. Integer必须实例化后才能使用,int变量不需要. Integer实际是对象的引用,生成一个新对象实际上是生成 ...

  2. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  3. mybatis一级缓存和二级缓存(二)

    注意事项与示例配置 一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言.所以在参数和SQL完全一样的情况下,我们使用 ...

  4. [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能

    [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...

  5. SpringBoot笔记十二:缓存

    目录 非缓存项目 缓存 JSR-107 Spring缓存抽象 @Cacheable @CachePut @CacheEvict @Caching @CacheConfig 整合Redis 先在Dock ...

  6. Redis使用总结(二、缓存和数据库双写一致性问题)

    首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作. 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存.又或者 ...

  7. Mybatis架构原理(二)-二级缓存源码剖析

    Mybatis架构原理(二)-二级缓存源码剖析 二级缓存构建在一级缓存之上,在收到查询请求时,Mybatis首先会查询二级缓存,若二级缓存没有命中,再去查询一级缓存,一级缓存没有,在查询数据库; 二级 ...

  8. C# - 缓存OutputCache(二)缓存详细介绍

    本文是通过网上&个人总结的 1.缓存介绍 缓存是为了提高访问速度,而做的技术. 缓存主要有以下几类:1)客户端缓存Client Caching 2)代理缓存Proxy Caching 3)方向 ...

  9. Picasso 修改缓存路径

    Picasso 是 Square 公司开源的一个非常友好的图片加载框架,使用范围也比较广泛.具体的使用这里就不做介绍了,文章主要讲讲如何修改图片的缓存路径.Picasso默认的缓存路径位于data/d ...

随机推荐

  1. dart pub上传失败如何解决

    问题: Flutter Exception: Pub will wait for a while before trying to connect again. 解决 1.设置终端代理 export ...

  2. js扩展函数收集

    1,checkbox序列化 2,form表单对象化 3,数组字符串化

  3. synchronized锁定类方法、volatile关键字及其他(八)

    同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁.看一下例子,注意一下printC()并不是一个静态方法: public ...

  4. 每日三道面试题,通往自由的道路14——MySQL

    茫茫人海千千万万,感谢这一秒你看到这里.希望我的面试题系列能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! 每日三道面试题,成就更好自我 昨天我们是不是聊到了锁,而你提到了MySQL? ...

  5. 10分钟物联网设备接入阿里云IoT平台

    前言最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程.本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工作1 ...

  6. Discuz 7.x/6.x 全局变量防御绕过导致代码执行

    地址 http://192.168.49.2:8080/viewthread.php?tid=13&extra=page%3D1 安装成功后,找一个已存在的帖子,向其发送数据包,并在Cooki ...

  7. SQL Challenges靶机

    http://www.zixem.altervista.org/SQLi/ 第一关 http://www.zixem.altervista.org/SQLi/level1.php?id=1 and 1 ...

  8. unittest系统(八)一文搞定unittest重试功能

    在前面的介绍中,我们对unittest进行了分享介绍,那么在实际的应用中,因为客观原因需要对失败,错误的测试用例进行重试,所以呢,现有的unittest的框架无法满足,那么我们可以去改造下是否能够满足 ...

  9. 剑指 Offer 40. 最小的k个数

    剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:ar ...

  10. Linux虚拟机配置SSH免密登录

    本环境为CentOS 7(点击镜像下载iso文件),无图界面. 启动SSH服务 在/usr/sbin/有一个文件为sshd,然后输入绝对路径/usr/sbin/sshd即可开启ssh服务. 然后输入命 ...