《effective java》中文第2版 note
,第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缓存大小成功

《effective java》中文第2版 note的更多相关文章
- 《Effective Java(中文第二版)》【PDF】下载
<Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)& ...
- Effective Java 第三版笔记(目录)
<Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时 ...
- Effective Java第三版(一) ——用静态工厂代替构造器
此文做为<Effective Java>系列的第一篇,所以有必要大概说下此书的特点,当然很多人可能都看过,毕竟是有着Java四大名著之一的大名在外,不过总会有萌新不了解,例如我!<E ...
- Effective Java 电子书 apk版本下载
下载安装包以后,安装即可阅读该书了,并且实时展示每章节代码哦,并且可以运行哦,赶快下载体验吧. Effective Java中文第二版下载地址:下载 应用截图:
- Effective Java —— 谨慎覆盖clone
本文参考 本篇文章参考自<Effective Java>第三版第十三条"Always override toString",在<阿里巴巴Java开发手册>中 ...
- Effective java第一章引言
菜鸟一枚,开始读第一本书<Effective Java>(第二版)~ 看引言就有好多名词不懂(>_<) 导出的API由所有可在定义该API的包之外访问的API元素组成.一个包的 ...
- effective java 3th 序
正本基本是自己翻译,翻译绝对有错误,就是这么自信,看的时候,自己注意下,如果感觉有语句不通,那么可能就是我翻译的出现了问题,可以自己翻找原文对比下. 其中自己的见解,我写在脚注中. 在 1997 年, ...
- Effective Java 3
<Effective Java>作者是美国的Joshua Bloch,连Gosling都说需要看的书,讨论的是更深层次的Java开发技术,适合于有一定Java基础的人看. 这是一本分享经验 ...
- Effective Java —— 使类和成员的可访问性最小化
本文参考 本篇文章参考自<Effective Java>第三版第十五条"Minimize the accessibility of classes and members&quo ...
随机推荐
- 搭建集群后再namenode上查看进程发现除了三个基本进程还可能有别的进程,例如本来在子节点出现的进程出现在了主节点上
搭建集群后再namenode上查看进程发现除了三个基本进程还可能有别的进程,例如本来在子节点出现的进程出现在了主节点上,namenode按正常来说是有三个进程的:namenode,resourcema ...
- springmvc的异常统一处理
在项目实际开发中,异常的统一处理是一个常态.假如不使用异常统一处理,我们往往需要在service层中捕获异常,并且根据不同的异常在result中的设置不同的code并给予相应的提示.这样可能会导致不同 ...
- html页面内锚点定位及跳转方法总结
1.最简单的方法是锚点用<a>标签,在href属性中写入DIV的id.如下: <!DOCTYPE html><html><head><style& ...
- Oracle - 创建表视图等 - DDL
解锁scott: sqlplus / as sysdba; alter user scott account unlock; alter user scott identified by tiger; ...
- 高负载linux调优
调整Linux内核参数: # vi /etc/sysctl.conf# tells the Kernel it's ok if services bind to non-existant IP ADD ...
- POSTMAN模拟数组数据
有时候写接口,需要传入数据数据.比如购物车中的一组商品.它们的数量是不固定的,只能用数组才能更好的处理. 怎么用POSTMAN模拟呢? 万能的POSTMAN.
- html5--项目实战-仿360囧图
html5--项目实战-仿360囧图 实例: 代码 <!doctype html> <html> <head> <meta charset="utf ...
- Newtonsoft.Json.dll 反序列化JSON字符串
上一篇JSON博客<JSON入门级学习小结--JSON数据结构>中已对JSON做了简单介绍,JSON字符串数组数据样式大概是这样子的: 如今因为项目需求(asp.net web网站,前台向 ...
- 【ZJOI 2006】 物流运输
[题目链接] 点击打开链接 [算法] 令cost(i,j) = 第i天到第j天走相同的路线,路线长度的最小值 那么,只需筛选出第i天到第j天可以装卸货物的码头,然后将这些码头之间连边,跑弗洛伊德(或其 ...
- python-----实现微信撤回消息还原
有时候用微信聊天,好友会撤回一些聊天记录,我们好奇,但又没法看,以下代码就可以满足大家的好奇心. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...