java系统优化性能注意事项

优化性能注意事项

<!--[if !supportLists]-->1、 <!--[endif]-->非优化不可再优化—-------牵一发动全身。

<!--[if !supportLists]-->2、 <!--[endif]-->改动后仔细测试。

<!--[if !supportLists]-->3、 <!--[endif]-->在一台虚拟机上的优化方案,在其它厂商虚拟机上不一定有相同效果。

高性能编码注意事项

<!--[if !supportLists]-->1、 <!--[endif]-->设计(功能设计)----选择高效方案

针对同一功能模块一般有很多套方案可供选择,选择合适的一套方案实现(一般靠实现者的经验决定备选方案)

<!--[if !supportLists]-->2、 <!--[endif]-->将对象的创建成本降到最低:

对象分为轻型对象,重型对象:

轻型对象:只包含基本类型的对象

重型对象:包含其它对象做为属性,或有深层的继承关系

<!--[if !supportLists]-->3、 <!--[endif]-->合理设计类的继承深度

见意不得多于三层,深层的继承关系会对classloader在加载类时造成性能低下的问题。

<!--[if !supportLists]-->4、 <!--[endif]-->类的构造函数要短小精干

对象的创建和在内存中维护的成本很高,对象在内存中维护的信息尽量小些

<!--[if !supportLists]-->5、 <!--[endif]-->将对象的创建拖延到最后一刻

<!--[if !supportLists]-->6、 <!--[endif]-->可能的话要自己实现一个对象缓冲管理池,将对象的创建与回收控制在一个合理的范围内。

<!--[if !supportLists]-->7、 <!--[endif]-->降低同步带来的影响

同步对性能的影响一般比非同步高出1.5倍左右,应该减少同步的使用和减少同步的代码量

<!--[if !supportLists]-->8、 <!--[endif]-->尽量可能使用stack和基本类型完成必要的任务

使用stack和基本类型可大大提高性能,因为他可以减少对内存的访问次数,再者他的存取速度要高于对对象维护表中数据信息的存取速度

<!--[if !supportLists]-->9、 <!--[endif]-->使用static final private以促成inlining函数

使用以上三者有可能使函数成为内联函数,是否成为内联函数要看.class文件的大小,jvm中有一个检查文件大小的功能,如果文件小,在编译时以上三种类型函数被做为内联函数,否则不然.

<!--[if !supportLists]-->10、实例变量初始化一次就好

初始化同样也会占有cup时间周期,尽量相同的初始化只做一次,如基本类型定义时已经初jvm初始化,不必做重复工作。

<!--[if !supportLists]-->11、群集类对象处理

群集类型中存放在是对象 ,因此优先选择数组实现相同功能

遍历:size>enumeration>iterator=listiterator

复制:system.arraycopy()比其它方式快上2倍有余。不是决对,根据用户硬件软件环境决定。

优先选择数组:在不考虑数据同步的时候,优先考虑非同步群集类hashmap,arraylist,linklist

<!--[if !supportLists]-->12、尽量重用对象

<!--[if !supportLists]-->13、缓式评估技术(延尽加载):延缓可能不需要进行的工作。只做现在用到的工作,以后需要的以后再做(不是决)

你可能感兴趣的:(java)