




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA性能优化,1,JDK使用优化,对象的创建与销毁1。避免在循环中定义局部变量2。使用clone方法有时比创建新对象更有效原因:对于构建继承层次深,构建复杂,直接调用clone可以绕过对构建器的调用3.避免深度继承,子类构建会导致父类的递归构建虚拟机参数调整-Xms128mXmx512mXss2m,2,4。不要重复初始化变量5。变量的作用域应尽可能小,变量用完后要及时释放6。对于需要序列化的对象,使用transient来指示那些不需要序列化的字段使用集合类1。ArrayList性能要好于VectorVector是线程安全的,而ArrayList是非线程安全的。且Vector内部存储了多余数据。,3,2。HashMap性能要优于Hashtable因为后者是线程安全的。3。Iterator遍历要比直接遍历集合慢4。LinkedList执行中间的插入和删除操作要比ArrayList快。7。固定长度集合操作、数组更高效8。非固定长度集合操作可以估计集合的长度,在创建时指定集合大小,可以避免多次自动分配内存9。使用WeakHashMap优化垃圾收集,4,I/O操作1。字节流操作性能优于字符流操作2。使用缓冲优化性能(BufferedInputStream,BufferedReader)异常处理异常处理要比普通处理速度慢,因此避免使用异常来控制程序逻辑,避免在循环中使用异常。字符串操作字符串连接操作尽量使用StringBuffer,使用StringBuffer时指定合适的初始容量可以优化性能JDK1.5以上,使用StringBuilder比StringBuffer更高效,但是非线程安全。对于频繁使用的字符串,可以使用字符串内置,节省内存。,5,JDBC性能优化1。打开数据库连接是一个耗时操作,可以使用连接池技术来优化2。使用PreparedStatement提高SQL执行性能3。使用batch处理批量执行SQL4。从ResultSet取得字段值时,尽量使用对应类型的get方法,避免潜在的类型转换5。设置PreparedStatement的参数时,尽量使用对应类型的set方法,避免潜在的类型转换6。控制事务的粒度,避免频繁开启新事务,也要避免过长的事务。合理设置事务隔离级别,6,6。如果在一个数据库连接上一次执行很多操作,那么每次操作执行后要及时关闭ResultSet和Statement7。尽量只检索必要的字段,避免过多冗余数据检索8。如果可能,将多次检索数据的SQL文合并成一个进行检索。9。使用setFetchSize()设置抓取块的大小,在数据量大的时候可以避免一次抓取过多的数据影响性能。10。数据行数多时,不要一次读入所有的行数,然后再从中读取分页的数据。可以考虑移动游标来定位数据。或则改变数据读入方向。Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)rs.relative(30);rs.setFetchDirection(ResultSet.FETCH_REVERSE);,7,SQL文优化(Oracle)全表操作条件:COL1=COL2(相同表)COL11000SELECTE.ENAME,D.DNAMEFROMEMPE,DEPTDWHEREE.DEPTNO=D.DEPTNOANDE.SAL1000,10,FROM表的次序:Oracle从后先前处理数据表,取得数据少,条件精确的表放到后面可以提高SQL执行的性能。数据类型的统一:Oracle数据库将把检索条件左边的部分转型为右边数据的类型进行比较。这样可能导致索引失效。因此要避免自动的类型转换。检索条件中有OR的情况,尽量使用UNION将OR的条件拆分成多个SQL后连接起来操作。,11,索引的合并当Where从句中含有多个索引时,oracle可能合并索引来使用。合并索引由于要读取多个索引所以比联合索引性能要差。下面是oracle索引的合并条件:,12,例子:设EMP表由三个索引,索引字段分别为SAL、DEPTNO、JOB、EMPNO,EMPNO为唯一字段。1)SELECTENAMEFROMEMPWHEREDEPTNO=20ANDJOB=MANAGER索引被合并使用。2)SELECTENAMEFROMEMPWHERESAL=4000ANDEMPNO=7902EMPNO被使用,因为唯一索引级别高。3)SELECTENAMEFROMEMPWHEREDEPTNO20ANDJOB=MANAGERJOB的索引被使用4)SELECTENAMEFROMEMPWHERESAL4000ANDEMPNO1SAL的索引被使用,EMPNO更有效,所以应该调整次序。,13,JSP/Servlet性能优化,合理使用输出缓存关闭不必要的session避免使用全局变量,避免使用线程同步使用分页技术处理大批量数据显示避免在session中放入大对象,session中不需要的对象要及时清除,14,频繁访问的数据,可以放到内存中以提升性能耗时的初始化操作可以放在init()/jspInit()中使用ServletOutputStream输出内容,而不要使用JspWriter.前者是输出字节流数据,后者是字符流,需要先转化为字节流,然后输出。out.print()输出内容的性能要好于out.println()如果不在意输出html的格式,使用out.print()操作可以提高性能。,15,EJB性能优化,避免直接访问实体EJB缓存EJBHome对象缩短EJBObject查找时间避免使用有状态sessionbean控制数据传输对象的粒度,避免对象粒度过小带来的过多EJB访问操作使用本地接口访问EJB可以获得访问普通javabean的性能,16,LOG输出,1。注意使用不同级别的log输出trace任意的跟踪信息,级别最低debug中间变量内容信息,级别次低info程序运行时候的正常操作信息,输入,输出等warning非正常操作,但不影响最终结果的操作信息error异常操作,影响结果,导致无
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幕墙材料性能检测与评估技术方案
- 专业能力评估题库及答案
- 广东省佛山市三水区2023-2024学年高一下学期期中考试语文考试题目及答案
- 数字经济产业园建设项目建筑工程方案
- 房屋建筑施工现场设备与工具管理方案
- 离婚协议彩礼退还与个人财产分割合同范本
- 离婚协议书多语种专业翻译与本地化合同
- 物业租赁合同范本:包含设施更新改造协议
- 私立幼儿园教师聘用合同中的师德师风建设协议
- 离婚诉讼财产分割与子女抚养权法律援助合同
- 养殖场水质监测管理制度
- 电厂运输煤炭合同模板
- 大学人工智能+教学试点课程立项建设申报书
- 登机桥应急撤桥
- 城镇供水排水行业职业技能竞赛化学检验员(排水化验员)赛项理论考试题库(含答案)
- 2024年普通考研-机械设计考试近5年真题集锦(频考类试题)带答案
- 中水合同模板
- 江苏省镇江市外国语学校2024-2025学年七年级上学期第一次月考数学试题(原卷版)
- 护理疑难病例讨论课件模板
- 同步课件4:改革开放和社会主义现代化建设的巨大成就
- 《电子邮件我收发》参考课件3
评论
0/150
提交评论