JDK 源码解析 —— Integer 来自 http://blog.csdn.net/wenniuwuren
来源:互联网 发布:看舌头知病情图片 编辑:程序博客网 时间:2024/06/12 20:34
零. 简介
对于 Integer 这个 Java 程序员几乎天天使用的类, 使用上却可以看出普通程序员和优秀程序员区别。
一. 深入代码
在创建数字 1 的对象时, 大多数人会使用 new Integer(1), 而使用 Integer.valueOf(1) 可以使用系统缓存,既减少可能的内存占用,也省去了频繁创建对象的开销。
系统默认只缓存 -128~127 之间的整数。下面我们看一下 Integer.valueOf(int) 方法的代码:
注意到核心 IntegerCache.cache[i + (-IntegerCache.low)], 观察 IntegerCache 类的源码实现:
为 -128 ~ 127 数值提供自动装箱的缓存服务。
static 静态代码块可知缓存的初始化是在第一次使用的时候。 通过 VM 参数-XX:AutoBoxCacheMax=<size> 可以配置缓存的最大值。 在 VM 初始化期间, 缓存最大值 high, 可能被保存在 sun.misc.VM class 的私有系统属性里。
三. 总结
除非是 JDK 1.5 以前的环境, 如果系统不需要新对象, 则推荐使用 Long, Integer, Short, Character, Byte 的 valueOf() 方法提升性能。
0 0
- JDK 源码解析 —— Integer 来自 http://blog.csdn.net/wenniuwuren
- 来自http://blog.csdn.net/a837199685
- 转载:http://blog.csdn.net/u010128736/ orb-slam2源码解析
- JDK 源码解析 —— Integer
- JDK 源码解析 —— Integer
- 翻页的WEB控件(来自http://blog.csdn.net/rickjelly2004)
- http://blog.csdn.net/
- http://blog.csdn.net
- http://blog.csdn.net/shanhe DotText源码阅读
- [转] 一个分组查询的SQL 常用算法(附源码可直接执行) [来自--http://blog.csdn.net/rainbowsoftware/archive/2007/04/26/1585355.aspx]
- Windows内存机制解析(http://blog.csdn.net/leezy_2000)
- java 内存解析 http://blog.csdn.net/shimiso
- 好的原程序做出好的软件(来自:http://blog.csdn.net/i_like_cpp)
- j2ee程序员应该掌握的linux知识(转贴来自http://blog.csdn.net/yzhz)
- 收藏来自http://blog.csdn.net/zhoufoxcn/article/details/2453803 的文章
- DP基础问题若干(ACM/ICPC) 来自http://blog.csdn.net/accry/article/details/6607593
- tomcat-转载来自http://blog.csdn.net/rentian1/article/details/51208703
- http://blog.csdn.net/matrix2003b/
- 2017新的一年
- 聚合函数和分组(sum(),count(),group by having)
- node-proxy - node.js反向代理缓存服务器
- 曾经写下的心情,现在想想越活越倒退了
- call to OpenGL ES API with no current context (logged once per thread)
- JDK 源码解析 —— Integer 来自 http://blog.csdn.net/wenniuwuren
- 树莓派的一些论坛
- Java实现死锁
- 再学01背包(一)
- 卡通画(矢量风格画)特效生成算法
- PAT甲级练习1014. Waiting in Line (30)
- c++命名空间
- 微信小程序 开发过程中遇到的坑(一)
- systemverilog语法(九)