`
gpqhl0071
  • 浏览: 54729 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JAVA--编程中“为了性能”需做的26件事(01)

    博客分类:
  • JAVA
 
阅读更多
1.尽量在合适的场合使用单例
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:
•控制资源的使用,通过线程同步来控制资源的并发访问;
•控制实例的产生,以达到节约资源的目的;
•控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。

2.尽量避免随意使用静态变量
要知道,当某个对象被定义为stataic的变量所引用,那么GC通常是不会回收这个对象所占有的内存,如

public class A{ static B b = new B();} 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。

3.尽量避免过多过常的创建Java对象
尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度的重用对象,最好能用基本的数据类型或数组来替代对象。

4.尽量使用final修饰符
带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止使用者覆盖length()方法。另外,如果一个类是final的,则该类所有方法都是final的。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。

5.尽量使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。

6.尽量处理好包装类型和基本类型两者的使用场所
虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的,基本类型数据产生和处理都在栈中处理,包装类型是对象,是在堆中产生实例。

在集合类对象中,有对象方面需要的处理适用包装类型,其他的处理提倡使用基本类型。

7.慎用synchronized,尽量减小synchronize的方法
都知道,实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。synchronize方法被调用时,直接会把当前对象锁了,在方法执行完之前其他线程无法调用当前对象的其他方法。所以synchronize的方法尽量小,并且应尽量使用方法同步代替代码块同步。

8.尽量使用StringBuilder和StringBuffer进行字符串连接
这个就不多讲了。

9.尽量不要使用finalize方法
实际上,将资源清理放在finalize方法中完成是非常不好的选择,由于GC的工作量很大,尤其是回收Young代内存时,大都会引起应用程序暂停,所以再选择使用finalize方法进行资源清理,会导致GC负担更大,程序运行效率更差。

10.尽量使用基本数据类型代替对象
String str = "hello"; 上面这种方式会创建一个“hello”字符串,而且JVM的字符缓存池还会缓存这个字符串;

String str = new String("hello"); 此时程序除创建字符串外,str所引用的String对象底层还包含一个char[]数组,这个char[]数组依次存放了h,e,l,l,o

11.单线程应尽量使用HashMap、ArrayList
HashTable、Vector等使用了同步机制,降低了性能。

12.尽量合理的创建HashMap
当你要创建一个比较大的hashMap时,要充分利用另一个构造函数public HashMap(int initialCapacity, float loadFactor)避免HashMap多次进行了hash重构,扩容是一件很耗费性能的事,在默认中initialCapacity只有16,而loadFactor是 0.75,需要多大的容量,你最好能准确的估计你所需要的最佳大小,同样的Hashtable,Vectors也是一样的道理。
JAVA--编程中“为了性能”需做的26件事(02):http://gpqhl0071.iteye.com/admin/blogs/1557957
分享到:
评论

相关推荐

    Java编程中“为了性能”需做的26件事

    Java编程中“为了性能”需做的26件事 1.尽量在合适的场合使用单例、2.尽量避免随意使用静态变量。

    Java-Java函数式编程教程

    Java函数式编程是一种编程范式,它强调使用函数作为程序的基本构建块,将计算...通过掌握这些核心概念和实践,你可以提升Java编程能力,特别是在处理大数据、并发和复杂逻辑时,函数式编程能够显著提高代码质量和效率。

    mysql-connector-java-5.1.7-bin.jar

    为了在Java环境中与MySQL数据库进行交互,我们需要一个中间桥梁,这就是所谓的JDBC(Java Database Connectivity)驱动。"mysql-connector-java-5.1.7-bin.jar" 文件就是这个桥梁,它是一个Java归档(JAR)文件,...

    java编程基础-01

    ### Java编程基础知识点详解 #### 一、Java技术概述 **1.1 Java技术的关键特性** Java技术是一种全面的软件开发平台,它包含了以下几个关键特性: - **编程语言**: Java是一种高级编程语言,具备现代编程语言的...

    mysql-connector-java-5.1.47-bin.jar

    在Java编程中,当你需要在应用程序中连接到MySQL数据库时,这个jar包就起到了关键作用。首先,你需要将`mysql-connector-java-5.1.47-bin.jar`添加到你的项目类路径(ClassPath)中,这样Java运行时环境才能找到并...

    mysql-connector-java-8.0.27.zip

    这个`mysql-connector-java-8.0.27.zip`文件包含了MySQL最新版本8.0.27的Java驱动程序,对于Java数据库编程至关重要。 **MySQL Connector/J** MySQL Connector/J是MySQL官方提供的JDBC(Java Database Connectivity...

    mysql-connector-java-5.1.45-bin.jar

    在Java编程中,为了连接到MySQL数据库,我们需要一个适配器或驱动程序,这就是MySQL Connector/J的角色。它实现了JDBC(Java Database Connectivity)接口,使得Java程序可以通过标准的JDBC API来操作MySQL数据库。...

    mysql-connector-java-5.1.40-bin.jar连接器

    JDBC是Sun Microsystems(现为Oracle公司)为Java编程语言设计的一套标准API,它的主要功能是为Java开发者提供一种统一的方式来访问各种不同类型的数据库,而无需关心具体的数据库厂商。通过JDBC,开发者可以编写...

    IBM--JAVA编程(中文)

    【IBM--JAVA编程(中文)】是一门专为学习IBM平台上的JAVA编程设计的课程,适合初学者和有一定基础的开发者。此课程采用中文教学,旨在帮助学员掌握JAVA语言的核心概念,以及在IBM环境中进行应用开发的技能。通过...

    java-1.8.0-openjdk.linux.x86_64

    此外,它还提供了Lambda表达式、函数式接口、Stream API、Optional类等Java 8的新特性,这些特性极大地提升了代码的简洁性和可读性,使得编程更加高效。 对于Linux x86_64架构,这个版本的OpenJDK优化了64位系统上...

    java-8-openjdk-amd64

    首先,Java 8是Java编程语言的一个重大版本更新,于2014年发布。它引入了多项新特性,极大地提高了开发效率和代码质量。其中最引人注目的包括: 1. **Lambda表达式**:这是一种简洁的匿名函数表示方式,允许将代码...

    mysql-connector-java-gpl-5.1.36

    MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得...理解这些核心概念和用法,可以帮助开发者有效地使用MySQL数据库进行Java编程。

    java编程规范-性能篇

    Java编程规范在性能方面的重要性不言而喻,良好的编码习惯能够显著提升程序的运行效率,减少不必要的资源消耗。以下是对给定文件中提到的一些关键性能规则和建议的详细解释: 1. **日志规则**: - 在输出Debug或...

    13-Java并发编程学习宝典.zip

    Java并发编程是软件开发中的重要领域,特别是在大型系统和高并发场景中不可或缺。"13-Java并发编程学习宝典.zip" 包含了一系列关于Java并发编程的学习资源,旨在帮助开发者掌握多线程编程的核心技术和最佳实践。以下...

    mysql-connector-java-5.1.15-bin.jar

    在Java编程环境中,当你需要连接到MySQL数据库时,你需要在类路径中包含这个JAR文件。JDBC驱动程序主要分为四种类型:Type 1、Type 2、Type 3和Type 4,其中MySQL Connector/J属于Type 4,即纯Java实现,无需依赖于...

    java-tcp-udp编程

    Java是世界上最流行的编程语言之一,尤其在服务器端和网络编程领域有着广泛的应用。TCP(传输控制协议)和UDP(用户数据报协议)是网络通信中的两种主要协议,它们各有特点,适应不同的应用场景。本篇文章将深入探讨...

    Java多线程-Socket编程

    Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口来实现,而 Socket 编程则...

    selenium-java-2.47.1.zip

    1. **libs**:包含了Selenium Java绑定所需的库文件,这些jar文件在编写测试脚本时需要引入到项目中。 2. **src**:源代码目录,对于开发者来说,查看源码有助于深入理解其工作原理。 3. **docs**:文档目录,可能...

    JAVA-OCR.rar_Java ORC编程_OCR Java_ORC java编程_orc java

    6. **性能优化**:由于OCR可能涉及到大量的计算,因此在Java中进行OCR编程时,需要考虑性能优化,如使用多线程、内存管理等。 7. **实战应用**:Java OCR可以应用于各种实际场景,如自动填写表单、识别身份证信息、...

    MySQL官方提供的驱动包 mysql-connector-java-5.1.30.zip (亲测可用)

    在Java编程环境中,JDBC驱动是连接数据库的标准方式。MySQL的JDBC驱动分为四个版本:Type 1、Type 2、Type 3和Type 4。`mysql-connector-java-5.1.30.zip`中的驱动属于Type 4,完全用Java编写,无需依赖特定的数据库...

Global site tag (gtag.js) - Google Analytics