[Effective Java 读书笔记] 第二章 创建和销毁对象 第五条
2015-08-24 23:50
357 查看
第五条 避免创建不必要的对象
书中一开始举例:
同时书中回顾了第一条中的静态工厂,即Boolean.valueOf(String)的例子,即静态工厂方法也不会每次都创建实例
然后用一个Date对象的使用的例子,说明了,当一个方法要重复访问固定值的对象实例时,可以用static实例,避免每次都创建同样的实例。
然后书中使用了一个例子说明要优先使用基本类型而不是装箱类型,比如int和Integer,因为装箱类型是对象,创建实例会有资源消耗.
最后,很辩证的,书中又回过头来说,不要以为创建新对象就一定是代价昂贵的,现代的JVM在小对象的创建和回收上是非常廉价的,如果创建新对象可以提升程序的清晰性、简洁性和功能性,这通常是好事,而对于轻量级的对象,建立对象池不是什么好事,代码负责而且占用内存。比如数据库连接池这种,建立新连接时代价昂贵,那么值得建立对象池。
书中一开始举例:
String s = new String("stringette"); // don't do this //应该使用下面,只会创建一次实例 String s = "stringette";
同时书中回顾了第一条中的静态工厂,即Boolean.valueOf(String)的例子,即静态工厂方法也不会每次都创建实例
然后用一个Date对象的使用的例子,说明了,当一个方法要重复访问固定值的对象实例时,可以用static实例,避免每次都创建同样的实例。
然后书中使用了一个例子说明要优先使用基本类型而不是装箱类型,比如int和Integer,因为装箱类型是对象,创建实例会有资源消耗.
最后,很辩证的,书中又回过头来说,不要以为创建新对象就一定是代价昂贵的,现代的JVM在小对象的创建和回收上是非常廉价的,如果创建新对象可以提升程序的清晰性、简洁性和功能性,这通常是好事,而对于轻量级的对象,建立对象池不是什么好事,代码负责而且占用内存。比如数据库连接池这种,建立新连接时代价昂贵,那么值得建立对象池。
相关文章推荐
- jquery分析网址
- node.js(三)url处理
- javaScript实现动态取得不同的验证码
- 简单演示Exploit SEH原理(未开启SafeSEH模块)
- [Effective Java 读书笔记] 第二章 创建和销毁对象 第三 四条
- 【剑指offer】五,二个栈实现队列
- bootstrap加载model以及dataTable按钮操作
- JavaScript基础
- jQuery性能优化篇
- nide.js(二)文件I/O
- [150824]Jquery 学习笔记
- nade.js(一)进程管理
- Sublime Text:格式化插件HTML-CSS-JS Prettify
- CSS学习笔记——选择器
- UVA 658 It's not a Bug, it's a Feature!
- bootstrap-js(4)标签页
- iis7 下 url重写后原本存在的html不能访问了未能执行 URL
- extjs3 用户管理 页面
- node.js 基础学习笔记2
- [237] Delete Node in a Linked List