《effective java》中文第2版 note
2024-08-30 17:33:23
,第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缓存大小成功
最新文章
- 【简易版】HashMap(增删改查)
- 用Javascript获取页面元素的位置
- Microsoft.CSharp.CSharpCodeProvider
- soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现
- bzoj 1038 [ZJOI2008]瞭望塔(半平面交)
- Hive 11、Hive嵌入Python
- Oracle总结第一篇【基本SQL操作】
- php+redis 学习 四 队列
- [Django] 单元测试小记
- How 5 Natural Language Processing APIs Stack Up
- SpringBoot19 集成SpringSecurity01 ->; 环境搭建、SpringSecurity验证
- 20155324《网络对抗》Exp06 信息搜集与漏洞扫描
- Linux /etc/hosts文件
- MGR架构~ 整体性能架构的调优
- [UE4]在蓝图中设置图片
- ElasticSearch 2 (22) - 语言处理系列之标记规范化
- 数据库cmd窗口登录
- JavacProcessingEnvironment类解读
- ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
- 常用HTML富文本编辑器
热门文章
- 使用7zip压解各种文件的经常使用命令
- 如何使Linux系统上的程序开机后自动运行 (转)
- mysql 中 unix_timestamp和from_unixtime 时间戳函数
- 2016/05/25 Ajax 跨域 转
- Django框架之ORM
- <;s:property>;的用法(jsp获取action中的值或者方法)
- 将最大主机/ DNS名称字符长度从63增加到255
- XMU 1071 圣斗士黄金十二宫(七)银河星爆 【计算几何】
- O(n&#178;)、O(n)、O(1)、O(nlogn)
- Machine Learning Note - Note 1