,第15条[66]:

  为不可变类提供静态工厂, eg : Integer/BigInteger 使用了静态工厂缓存了一些常用的实例, 通常 Integer -128 ~ +127.  BigInteger -16 ~ +16。

那么可以主动控制这些缓存的范围么? 可以的, 首先查看了下Integer的源码。

发现内部的缓存类的静态块中有读取某个属性的地方。

打个断点看了一下, 发现了读取数据的map,那这个savedProps是从哪里读取到数据的呢?(没打明白断点,没找到,后边补充)

这时我们只要在这个map中设置了对应的kv就可以更改缓存范围了。

通过更改JVM参数可以改变Integer缓存的范围。在Idea中打开Run/Debug Configurations

在下入红框处输入 -XX:AutoBoxCacheMax=size

注:size为初始化Integer缓存大小, 如 : -XX:AutoBoxCacheMax=200

测试demo

package unit.singleton;

import lombok.extern.slf4j.Slf4j;
/**
 * Description: test
 *
 * @author: lvyichao
 * Version: 1.0
 * Create Date Time: 2019-04-02 21:29.
 * Update Date Time:
 */
@Slf4j
public class Singleton{

    public static void main(String[] args) {
        Integer num1 = Integer.valueOf(1);
        Integer num2 = Integer.valueOf(1);
        if(num1 == num2){
            log.info("num1 == num2");
        }else {
            log.info("num1 != num2");
        }

        Integer num3 = Integer.valueOf(128);
        Integer num4 = Integer.valueOf(128);
        if(num3 == num4){
            log.info("num3 == num4");
        }else {
            log.info("num3 != num4");
        }

        Integer num5 = Integer.valueOf(201);
        Integer num6 = Integer.valueOf(201);
        if(num5 == num6){
            log.info("num5 == num6");
        }else {
            log.info("num5 != num6");
        }
    }
}

测试结果, 更改Integer缓存大小成功

最新文章

  1. 【简易版】HashMap(增删改查)
  2. 用Javascript获取页面元素的位置
  3. Microsoft.CSharp.CSharpCodeProvider
  4. soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现
  5. bzoj 1038 [ZJOI2008]瞭望塔(半平面交)
  6. Hive 11、Hive嵌入Python
  7. Oracle总结第一篇【基本SQL操作】
  8. php+redis 学习 四 队列
  9. [Django] 单元测试小记
  10. How 5 Natural Language Processing APIs Stack Up
  11. SpringBoot19 集成SpringSecurity01 -> 环境搭建、SpringSecurity验证
  12. 20155324《网络对抗》Exp06 信息搜集与漏洞扫描
  13. Linux /etc/hosts文件
  14. MGR架构~ 整体性能架构的调优
  15. [UE4]在蓝图中设置图片
  16. ElasticSearch 2 (22) - 语言处理系列之标记规范化
  17. 数据库cmd窗口登录
  18. JavacProcessingEnvironment类解读
  19. ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
  20. 常用HTML富文本编辑器

热门文章

  1. 使用7zip压解各种文件的经常使用命令
  2. 如何使Linux系统上的程序开机后自动运行 (转)
  3. mysql 中 unix_timestamp和from_unixtime 时间戳函数
  4. 2016/05/25 Ajax 跨域 转
  5. Django框架之ORM
  6. <s:property>的用法(jsp获取action中的值或者方法)
  7. 将最大主机/ DNS名称字符长度从63增加到255
  8. XMU 1071 圣斗士黄金十二宫(七)银河星爆 【计算几何】
  9. O(n²)、O(n)、O(1)、O(nlogn)
  10. Machine Learning Note - Note 1