Java性能优化的小细节
性能优化实现方式(单纯考虑代码层面):
1.减小代码体积
2.提高运行效率
如何做:
1.尽量指定类.方法的final修饰符
带有final修饰的类是不可派生的,该类所有的方法都是final的,java编译器会寻找机会内联所有的final方法,有助于提高运行效率.
2.尽量复用对象
对象的创建和维护都会花费java虚拟机的精力,特别是String对象的使用,出现的字符串连接要使用StringBuilder/StringBuffer来替代+号,因此,生成过多的对象将会给虚拟机带来不必要的负担;
3.及时关闭流
使用I/O流对数据进行操作是会对系统造成非常大的负担,用完要及时close;
4.不要在循环语句中进行复杂的处理,以及一些异常处理,应该把这些提取到循环外层
例如try...catch...应该放在外层
5.循环内不要进行对象的频繁创建,除非不得已的情况下;
6.尽量使用HashMap、ArrayList、StringBuilder,除非对线程安全有需求,不推荐使用HashTable、Vector、StringBuffer后三者因为做了同步机制对性能有较高的要求;
7.清除不需要的会话;
8.将常量声明为static final,并且用大写来命名
9.不创建一些不使用的对象,不导入一些不使用的包
10.程序运行过程中避免使用反射,可以考虑在项目启动的时候通过反射创建对象并且加载到内存中
发射是java非常强大的一个功能,但是功能强大的同时也意味着效率不高,尤其是Method的invoke方法
11.使用数据库连接池和线程池
这样前者可以避免频繁的打开和关闭流,后者可以避免频繁的创建和销毁线程;
12.使用带缓冲的流进行I/O操作
13.public修饰的方法中形参最对不要超过3个
形参过多会导致方法的容错率降低,如果有很多方法可以用实体类包装传递;
14.在使用equals的时候把常量放在前面
这样可以避免空指针异常
15.不要对数组使用toString()方法
因为对数组使用只会打印出一串对象地址,而且有可能因为数据引用is为空而导致空指针异常,不过可以对集合使用toString()方法,因为集合的父类AbstractCollections重写了toString()方法;
16.不要对超出数据范围的基本数据类型做向下的强制类型转换,会导致精度损失
17.对基本数据类型转换为字符串最快的方式是toString(),其次是String.valueOf(数据),再次是+"" 最慢
18.对资源的关闭建议分开操作
例如
try{
stream.close();
fileInPutStream.close();
}catch(Exception e){
.....
}
建议修改为
try{stream.close}catch(Exception e){....}
try{fileInPutStream.close()}catch(Exception e){....}
第一种写法,假如stream流出了问题,抛了异常,那么fileInPutStream就无法关闭,这样代码一多,就有可能引起资源句柄泄露.
第二种写法虽然麻烦但是无论如何都会关闭,更加安全,当然也可以使用finall来关闭.
Java性能优化的小细节的更多相关文章
- Java 性能优化的55个细节(珍藏版)
在Java程序中,性能问题的大部分原因并不在于Java语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间 ...
- java 性能优化(代码优化)
参考博文: java 性能优化:35 个小细节,让你提升 java 代码的运行效率
- 《Java性能优化权威指南》
<Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...
- Java 性能优化手册 — 提高 Java 代码性能的各种技巧
转载: Java 性能优化手册 - 提高 Java 代码性能的各种技巧 Java 6,7,8 中的 String.intern - 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String ...
- 44个Java性能优化
44个Java性能优化 首先,代码优化的目标是: 减小代码的体积 提高代码运行效率 代码优化细节 1 .尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心AP ...
- 推荐:Java性能优化系列集锦
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...
- JVM——九大工具助你玩转Java性能优化
本文转载自 http://www.importnew.com/12324.html 本文由 ImportNew - 陈 晓舜 翻译自 idrsolutions.欢迎加入翻译小组.转载请参见文章末尾的要 ...
- Java 性能优化的五大技巧
要对你的 Java 代码进行优化,需要理解 Java 不同要素之间的相互作用,以及它是如何与其运行时的操作系统进行交互的.使用下面这五个技巧和资源,开始学习如何分析和优化你的代码吧. 在我们开始之前, ...
- 【转】10种简单的Java性能优化
10种简单的Java性能优化 2015/06/23 | 分类: 基础技术 | 14 条评论 | 标签: 性能优化 分享到: 本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加 ...
随机推荐
- .Net基础篇_学习笔记_第七天_Continue关键字的用法
Continue: 立即结束本次循环,判断循环条件: 如果成立,则进行下一次循环,否则退出循环. Continue和break的区别: 遇到break,循环不继续. 遇到continue,本次循环也不 ...
- java中的GC
1.GC发生在JVM中的堆区 2.GC是很么? 1.次数上频繁收集Young区 Minor GC 2.次数上较少收集Old区 Full GC 3.基本不动的Perm区 3.G ...
- Day 22 进程管理2之系统的平均负载
1.管理进程状态 当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号.当然除了kill.还有killall,pkill 1.使用kill ...
- 使用T2表中的值替换T1表的值
描述:现在有两张表,T1由Key和Value两个字段,T2也有Key和Value两个字段 当T1中的Key在T2表中存在时,更新使用T2表中对用的Value 值替换T1中的VAlue update A ...
- Spring IOC MVC DI简单实现
目录的大致情况:所有的类都会加进来. 1.首先先写基本的Controller Service ServiceImpl Controller Service ServiceImpl是用来验证下面写的框架 ...
- Spark学习之RDDs介绍
什么是RDDS? RDDS即Resilient distributed datasets(弹性分布式数据集). Spark中,所有计算都是通过RDDs的创建,转换,操作完成的. 一个RDD是一个不可改 ...
- 【转】在Linux下搭建Git服务器
在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...
- JavaSE知识点总结(一)
第一章 课程介绍第二章 java语言概述 课时2:作业 1.常用软件分为那两类? 系统软件 应用软件 2.人机交互的两种方式是哪两种? 图形化界面 代码行命令 课时3:作业 1.java语言的特性有哪 ...
- 深度学习论文翻译解析(五):Siamese Neural Networks for One-shot Image Recognition
论文标题:Siamese Neural Networks for One-shot Image Recognition 论文作者: Gregory Koch Richard Zemel Rusla ...
- Spring 梳理 - 构造web项目时,使用eclipse如何引用jar包
方法1:直接将jar复制到web项目中的WEB-INF/lib目录中 方法2:构造buildpath时,不使用“外部jar”的形式