Java背后的秘密之如何开发出高性能Java程序05
来源:互联网 发布:nginx源码剖析 pdf 编辑:程序博客网 时间:2024/05/03 12:13
1、开发高性能Java程序的原则和方法:
决定一个Java程序性能的好坏,是多方面的因素,包括前期的系统结构设计、底层平台架构设计、应用开发中的代码编写以及技巧的使用,系统平台的软件配置,系统平台的硬件性能等等。这里只给出代码编写方面的一些原则和方法。
相对于Java的其他方面,在性能领域Java饱受的非议可能最多。许多人认为,Java如果想更好的发展下去必须解决性能问题。然而真正的事实是Java在编译器、JVM以及运行期优化方面确实在不断的进步,Java正在运行的越来越快。实际上很多的性能问题,是由于设计不佳引起的,与Java本身并无关系。在拙劣的设计和编码面前,无论你使用多少运行期优化,无论你的编译技术多么先进,无论你的硬件平台性能多么强大,最后的代码运行依然低效。
同样无论运行期优化技术、编译技术以及硬件平台多么强大,运用一些已被验证对Java运行性能有益的技术,总是能获得非常好的收益。
优化程序代码的注意事项:
1.除非必须优化,否则不要轻易改动;
2.改动之后要进行仔细的测试;
3.在各个JVM产品中,优化的方式是有区别的;
2、高性能Java的编码原则:
(1)、先把焦点放在设计、数据结构和算法身上;
(2)、不要依赖于编译器编译期优化技术,正确理解运行期代码优化技术以及正确使用运行期代码优化;
(3)、使用StringBuffer类完成字符串连接;
(4)、将对象创建成本降至最低,即尽量创建轻量级对象;
1、合理设计对象大小
2、合理设计类的继承深度
3、类的构造函数要短小精干
4、不要创建非必要的对象
5、将对象的创建拖延到最后一刻,即延迟加载技术
6、可能的话要自己实现一个对象缓冲管理池,将对象的创建与回收控制在一个合理的范围内
(5)、降低同步化带来的影响;
1、合理识别是否一定要使用同步控制,尽量从设计上避免
2、注意控制同步代码范围,避免对线程活跃度造成影响
3、合理使用锁变量,做到线程分离,提高程序并发度,更进一步提高程序吞吐量
4、用于锁变量的对象不宜过多,当要使用多个对象作为锁变量时,一定要确保在代码中自始自终按照同样的顺序锁定它们,否则可能导致死锁
(6)、尽可能使用Stack变量和基本类型完成必要的任务;
(7)、使用static、final、private方法以促成inlining;
(8)、实例变量初始化一次就好;(即一定义就会有一个初始值,下面不需要再进行一次初始化)
(9)、集群类对象的处理;
1、如何正确遍历集群类?
2、如何复制数组元素?
3、如何正确选择使用合适的集群类?
(10)、尽可能重用对象;
(11)、使用延迟加载技术;
当然上面都是理论方法,实践需要靠大家自己去了,两个代码实在不知道那种性能更好,javap看字节码执行,看步骤,这是最土的方法,却是最能说服自己的证据!
转载来源www.boobooke.com/bbs->J2EE专区->蓝山作品—Java背后的秘密(汇总)
- Java背后的秘密之如何开发出高性能Java程序05
- Java背后的秘密之如何开发出高性能Java程序05
- Java背后的秘密之深入Java虚拟机初探01
- Java背后的秘密之深入Java虚拟机初探01
- Java背后的秘密之虚拟机的组成部件02
- Java背后的秘密之虚拟机的组成部件02
- Java 5.0 高性能程序开发总结
- Java背后的秘密之Java的类装载器03
- Java背后的秘密之Java的垃圾收集器04
- Java背后的秘密之Java的类装载器03
- Java背后的秘密之Java的垃圾收集器04
- 编写高性能的Java 程序
- Java Web 高性能开发, 前端的高性能
- JAVA学习8_@Override标签背后的小秘密
- 怎样才能开发出高质量的程序
- Java Web 高性能开发
- 如何优化JAVA程序开发,提高JAVA性能?
- 如何优化JAVA程序开发,提高JAVA性能
- Oracle笔记 目录索引
- 修改目录下所有文件的权限
- poj 1556 The Doors
- notifyDataSetChanged() 动态更新ListView
- 最近开始学习ubuntu,想记录一下学习过程,也为在学习的朋友提供一个参考
- Java背后的秘密之如何开发出高性能Java程序05
- gdb+gdbserver调试(方式1)
- 在net-snmp agent中扩展自己的mib 的三种方式
- 堆排序
- pthread 简要使用指南(五) 线程属性(pthread_attr_t)
- 关于瀑布流
- JDBC 连接数据库
- http和HTTPS的区别及SSL介绍
- 中缀表达式 堆栈 详细过程 题目及答案