优化性能注意事项
1、 非优化不可再优化———-牵一发动全身。
2、 改动后仔细测试。
3、 在一台虚拟机上的优化方案,在其它厂商虚拟机上不一定有相同效果。
高性能编码注意事项
1、 设计(功能设计)—-选择高效方案
针对同一功能模块一般有很多套方案可供选择,选择合适的一套方案实现(一般靠实现者的经验决定备选方案)
2、 将对象的创建成本降到最低:
对象分为轻型对象,重型对象:
轻型对象:只包含基本类型的对象
重型对象:包含其它对象做为属性,或有深层的继承关系
3、 合理设计类的继承深度
见意不得多于三层,深层的继承关系会对classloader在加载类时造成性能低下的问题。
4、 类的构造函数要短小精干
对象的创建和在内存中维护的成本很高,对象在内存中维护的信息尽量小些
5、 将对象的创建拖延到最后一刻
6、 可能的话要自己实现一个对象缓冲管理池,将对象的创建与回收控制在一个合理的范围内。
7、 降低同步带来的影响
同步对性能的影响一般比非同步高出1.5倍左右,应该减少同步的使用和减少同步的代码量
8、 尽量可能使用stack和基本类型完成必要的任务
使用stack和基本类型可大大提高性能,因为他可以减少对内存的访问次数,再者他的存取速度要高于对对象维护表中数据信息的存取速度
9、 使用static final private以促成inlining函数
使用以上三者有可能使函数成为内联函数,是否成为内联函数要看.class文件的大小,jvm中有一个检查文件大小的功能,如果文件小,在编译时以上三种类型函数被做为内联函数,否则不然.
10、实例变量初始化一次就好
初始化同样也会占有cup时间周期,尽量相同的初始化只做一次,如基本类型定义时已经初jvm初始化,不必做重复工作。
11、群集类对象处理
群集类型中存放在是对象 ,因此优先选择数组实现相同功能
遍历:size>enumeration>iterator=listiterator
复制:system.arraycopy()比其它方式快上2倍有余。不是决对,根据用户硬件软件环境决定。
优先选择数组:在不考虑数据同步的时候,优先考虑非同步群集类hashmap,arraylist,linklist
12、尽量重用对象
13、缓式评估技术(延尽加载):延缓可能不需要进行的工作。只做现在用到的工作,以后需要的以后再做(不是决)
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91531 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!