JAVA程序的性能优化

程序|性能|优化

 

1 使用非阻塞I/O

版本较低的JDK不支持非阻塞I/O API。为避免I/O阻塞,一些应用采用了创建大量线程的办法(在较好的情况下,会使用一个缓冲池)。这种技术可以在许多必须支持并发I/O流的应用中见到,如Web服务器、报价和拍卖应用等。然而,创建Java线程需要相当可观的开销。

JDK 1.4引入了非阻塞的I/O库(java.nio)。如果应用要求使用版本较早的JDK,在这里有一个支持非阻塞I/O的软件包。

2 慎用异常

异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。

异常只能用于错误处理,不应该用来控制程序流程。

3 不要重复初始化变量

默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和double变量设置成0.0,逻辑值设置成false。当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键词创建一个对象时,构造函数链中的所有构造函数都会被自动调用。

4 尽量指定类的final修饰符

带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止了人们覆盖length()方法。

另外,如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。

5 尽量使用局部变量

调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化。

 

时间: 2024-10-03 03:34:11

JAVA程序的性能优化的相关文章

Java程序的性能优化StringBuffer与Vector

程序|性能|优化 ? Java使得复杂应用的开发变得相对简单.毫无疑问,它的这种易用性对Java的大范围流行功不可没.然而,这种易用性实际上是一把双刃剑.一个设计良好的Java程序,性能表现往往不如一个同样设计良好的C++程序.在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身.养成好的代码编写习惯非常重要,比如正确地.巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能.下面我们就来具体地分析一下这方面的问题.

快”在细节 J2EE程序的性能优化技巧

j2ee|程序|技巧|性能|优化 应用J2EE平台开发的系统的性能是系统使用者和开发者都关注的问题,本文从服务器端编程时应注意的几个方面讨论代码对性能的影响,并总结一些解决的建议. 关键词:性能,Java,J2EE,EJB,Servlet,JDBC 一.概要 Java 2 Platform, Enterprise Edition (J2EE)是当前很多商业应用系统使用的开发平台,该技术提供了一个基于组件的方法来设计.开发.装配和部署企业级应用程序.J2EE平台提供了一个多层结构的分布式的应用程序

java 性能测试-Java程序测试性能发现执行时间随着循环次数会明显降低

问题描述 Java程序测试性能发现执行时间随着循环次数会明显降低 今天用java写了一段算法,主要涉及到treeMap,arraylist的一些操作. 测试流程如下: algorithm A=new algorithm (); List testData=new ArrayList(); //循环体内的测试数据集数据量相当,切均不一样. for(int i=0;i<testData.size();i++) { long StartTime=????;//counting time A.do(te

【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)

第一章 技术人生系列 · 我和数据中心的故事(第五期)-清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数据中心的故事来到了第五期.小y又和大家见面了! 前几期主要发了一些TroubleShooting的案例分享,其实小y最擅长的是性能优化,所以从这期开始,小y会陆续的分享更多的数据库性能优化案例. 进入正题,如果您的日终跑批/清算/报表等程序时快时慢,或者从某一天以后就一直变慢,作为运维DBA或开发的您,会怎么下手

实例jie如何提高Java Web 服务性能优化实践

本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息.重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点.本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景. Java Web 服务简介 Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作.Web 服务(Web Service)是基于 X

Java虚拟机JVM性能优化(二):编译器_java

本文将是JVM 性能优化系列的第二篇文章(第一篇:传送门),Java 编译器将是本文讨论的核心内容. 本文中,作者(Eva Andreasson)首先介绍了不同种类的编译器,并对客户端编译,服务器端编译器和多层编译的运行性能进行了对比.然后,在文章的最后介绍了几种常见的JVM优化方法,如死代码消除,代码嵌入以及循环体优化. Java最引以为豪的特性"平台独立性"正是源于Java编译器.软件开发人员尽其所能写出最好的java应用程序,紧接着后台运行的编译器产生高效的基于目标平台的可执行代

Java虚拟机JVM性能优化(一):JVM知识总结_java

Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨平台引擎,垃圾回收基础知识,经典的GC算法和编译优化.之后的文章会讲JVM性能优化,包括最新的JVM设计--支持当今高并发Java应用的性能和扩展. 如果你是一个开发人员,你肯定遇到过这样的特殊感觉,你突然灵光一现,所有的思路连接起来了,你能以一个新的视角来回想起你以前的想法.我个人很喜欢学习新知识带来的这种感觉.我已经有过很多次这样

ASP程序的性能优化

程序|性能|优化 第一章 使用服务器缓存 1.使用application和session保存数据的技巧. 可以再程序启动或会话开始时将需要的数据赋值给application和session对象.使用这种方法只需要在global.asa文件的application_Onstart和session_OnStart函数中添加响应的赋值函数或语句即可. 再合适的条件下可以缓存ADO记录本身,但是需要注意: 1.ADO记录必须时自由线程标记的 2.必须时已经断开的记录集 3..在服务器硬盘上缓存数据 对于

PHP应用程序的性能优化

程序|性能|优化 使用PHP编程的最大好处是学习这种编程语言非常容易以及其丰富的库.即使对需要使用的函数不是十分了解,我们也能够猜测出如何完成一个特定的任务. 尽管PHP非常简单易学,但我们仍然需要花费一点时间来学习PHP的一些编程技巧,尤其是与性能和内存占用相关的技巧.在PHP中,有许多小技巧能够使我们减少内存的占用,并提高应用程序的性能.在本篇文章中,我们将对PHP应用程序的分析.如何改变脚本代码以及比较优化前后的各种参数值进行简要的介绍. 通过在程序中设置计时的程序,并反复执行这些代码,我