`

无意中提高你的Java程序的性能

    博客分类:
  • Java
阅读更多

本文系 www.javady.com网站原创,转载请标明出处

1、 对于常用工具类的方法,需要关注同步问题

2、 对于不能确认被其它代码如何调用的方法或者可能被其它代码频繁调用的方法,需要关注同步问题


3、 对于常量字符串,不要通过new方式来创建


4、 对于常量字符串之间的拼接,请使用“+”;对于字符串变量(不能在编译期间确定其具体值的字符串对象)之间的拼接,请使用StringBuffer;在JDK1.5或更新的版本中,若字符串拼接发生在单线程环境,可以使用StringBuilder


5、 在使用StringBuffer进行字符串操作时,请尽量设定初始容量大小;也尽量避免通过String/CharSequence对象来构建StringBuffer对象


6、 当查找字符串时,如果不需要支持正则表达式请使用indexOf(…)实现查找;当需要支持正则表达式时,如果需要频繁的进行查找匹配,请直接使用正则表达式工具类实现查找


7、 对于简单的字符串分割,请尽量使用自己定义的公用方法或StringTokenizer


8、 当需要对报文等文本字符串进行分析处理时,请加强检视,注意算法实现的优化


9、 在实现业务处理流程的过程中,需要考虑临时对象引起的性能问题,精简业务处理流程,减少不必要的中间环节


10、 对象的创建应尽量按需创建,而不是提前创建


11、 对象的创建应尽量在for、while等循环外面创建,在循环里面进行重用


12、对于高频度使用的对象,需要进行单独优化处理给以重用


13、在代码开发中,需要根据应用场景合理选择集合框架中的集合类,应用场景可按单线程和多线程来划分,也可按频繁插入、随机提取等具体操作场景来划分


14、对于热点代码,可以采用特定的集合类来提供系统性能,特定集合类可以是自己开发,也可以直接采用Trove这样的第三方开源类库


15、当需要在方法之间传递多个属性值时,从性能角度考虑,应优先采用结构体,而非ArrayList或Vector等集合类


16、进行IO读写操作时,必须使用缓冲机制


17、从性能角度考虑,应尽量优先使用字节IO进行读写,而避免用字符IO进行读写


18、对于数组、集合的拷贝、查找、排序等操作,如果是一般应用,可以优先采用java.util.Arrays和java.util.Collections中提供的工具方法;但是对于热点代码,最好是参考java API中的方法实现,自己开发特定的排序等方法,以减少临时对象的创建。


19、对于数组的拷贝,请使用System.arraycopy(…)方法


20、如果往框架类或者系统类对象中添加了某个对象,那么当该对象不再使用时,必须及时清除


21、当使用自己定义的类装载器去装载类时,在被装载的类不再使用后,需要保证该类装载器可以被垃圾回收


22、尽量不要将一些大的对象(对象本身比较大或其引用的对象比较多)定义成静态的


23、如果在一个对象中创建了一个线程,当对象不再使用时,必须关闭该线程


24、在JFrame、JDialog等窗口对象中,尽量处理窗口关闭事件并释放资源


25、在IO操作中,必须定义finally代码段,并在该代码段中执行IO关闭操作[align=left][/align]

 

分享到:
评论

相关推荐

    编写高效优雅Java程序.pdf

    1. **避免创建不必要的对象**:避免无意中创建的对象,比如自动装箱,以及在多个实例之间可以共享的成员变量,建议使用static关键字。 2. **对象池的使用**:对象池的使用应慎重,只在创建对象非常昂贵的情况下(如...

    JAVA语言程序设计

    - **平台无关性:** Java程序可以在任何安装了Java虚拟机(JVM)的操作系统上运行,无需修改代码。 - **安全性:** Java拥有内置的安全机制,能够有效防止恶意代码的执行,保护系统的安全。 - **可靠性:** Java的...

    java代码审查.pdf

    文档中提到了多种控制流语句,这些语句是编写Java程序中的决策点和流程控制的重要组成部分,包括if-else、switch-case、for、do-while等。有效的利用这些语句可以提高代码的可读性和效率。同时,文档提到了有关循环...

    javaAPI中文版1.5

    Java API(应用程序接口)是Java编程语言的核心组成部分,它提供了大量的类和接口,开发者可以使用这些现成的组件来构建各种复杂的应用程序。Java API 1.5,也被称为Java SE 5.0(Java Standard Edition 5.0),是一...

    JAVA-内存模型.docx

    除了堆和栈之外,Java程序还可能使用本机内存(Native Memory),这通常是指Java虚拟机之外的内存,例如直接缓冲区(Direct Buffer)所使用的内存。直接缓冲区是在Java NIO(New I/O)包中引入的,用于提高I/O操作的...

    Reactive Streams in Java

    同时,也要求开发者在设计系统时必须考虑到异步边界的划分,以避免无意中的阻塞调用和线程泄露。 上述书籍《Reactive Streams in Java: Concurrency with RxJava, Reactor, and Akka Streams》由Adam L. Davis撰写...

    网络编程语言Java的内存泄露原因分析及处理措施

    Java 中内存泄露的主要表现是某些对象不被需要和使用时,一些程序或代码仍然对其进行保持或引用,这样使得垃圾收集器无法回收这些垃圾对象占用的内存。这是由于垃圾收集器的垃圾对象判断机制认为这些对象仍然“有用...

    java面试笔试题大汇总

    JAVA面试笔试题大汇总,深度...总结,JAVA面试中的笔试题往往涵盖面向对象的基本原理、数据类型、异常处理、集合框架、服务器端技术等多个方面,深入理解这些核心概念和技术,对于提升JAVA编程技能和面试表现至关重要。

    Muller M. - Java Lambdas and Parallel Streams - 2016.pdf

    在本书的版权声明中,提到商标名、标志和图片可能出现在书籍中,但是为了避免每次提及商标时都加上商标符号,作者仅以编辑的方式使用这些名称、标志和图片,并且无意侵犯商标权。此外,本书中使用了商标名、商标标志...

    Java-code-security.rar_java security

    Java代码的安全性是软件开发中的重要议题,尤其是在网络应用日益普及的今天,保障代码安全对于防止数据泄露、保护用户隐私以及维护系统稳定性至关重要。本文主要探讨13种类型的静态暴露问题,并提供相应的解决策略。...

    java内存泄露定位与分析共13页.pdf.zip

    Java内存泄露是一个严重的问题,它可能导致系统性能下降,甚至服务崩溃。本文将深入探讨Java内存泄露的定位与分析,帮助开发者更好地理解和解决这类问题。 首先,我们需要了解Java内存的几个区域:堆(Heap)、栈...

    窗口透明程序,懂得入~~~

    窗口透明程序是一种特殊类型的软件应用,它允许用户调整应用程序窗口的透明度,使得用户可以透过窗口看到背景的内容。这种技术在现代操作系统...它在提高用户界面体验的同时,也需要开发者考虑性能、安全和隐私等因素。

    Java中final关键字的用法总结

    final参数主要用于防止方法内部无意中改变参数值,但不影响方法外部的变量。 以下是一个示例程序的分析: ```java public class Test { public static void main(String[] args) { String a = "hello2"; final ...

    jdk-6u45-windows-x64.rar

    1. **Java编译器**(javac):用于将源代码编译为字节码,这是Java程序在Java虚拟机(JVM)上运行的格式。 2. **Java解释器**(java):执行编译后的字节码,使得程序能在不同平台上运行,实现“一次编写,到处运行...

    无意间发现的sturts过滤器

    在Struts框架中,过滤器(Filter)扮演着至关重要的角色,尤其在处理请求和响应时,过滤器可以帮助我们解决诸如乱码等问题,提高应用程序的性能和安全性。 标题中的“无意间发现的Struts过滤器”揭示了Struts框架中...

    Speedkoala BD云加速 v5.0.3.zip

    "无意中发现的,用过了才知道" 表明该软件可能不那么知名,但用户在实际使用后对其性能感到惊喜。 【标签解析】 "java" 标签表明这款软件可能由Java编程语言开发。Java是一种广泛使用的跨平台编程语言,适用于开发...

    ojdb6 和 ojbc7

    Oracle JDBC驱动程序是Java应用程序与Oracle数据库之间通信的重要桥梁,主要由Oracle公司提供。ojdbc6和ojdbc7是两个不同版本的驱动程序,分别对应于JDBC的特定兼容性级别和Oracle数据库的不同版本。 ojdbc6是...

    JVM内存泄露

    内存泄露是Java应用程序中常见的问题之一,它可能会导致应用程序性能下降甚至崩溃。Cork作为一种新型的动态内存泄露检测工具,通过精准的类型体积分析和数据结构定位,为开发者提供了一种有效的解决方案。相较于其他...

    用于在基于JPA的Spring Boot Java应用程序中自动检测和断言“N+1选择问题”发生的工具,并在一般情况下发现JPA发出的SQL语句的来源- adgadev/jplusone

    在基于Java的开发环境中,尤其是使用Spring Boot框架和JPA(Java Persistence API)进行ORM(对象关系映射)时,"N+1选择问题"是一个常见的性能瓶颈。JPA允许开发者以面向对象的方式操作数据库,但如果不谨慎处理,...

Global site tag (gtag.js) - Google Analytics