`

java编程优化

阅读更多
1.JVM 管理两种类型的内存:堆内存(heap),栈内存(stack),堆内在主要用来存储程序在运行时
创建或实例化的对象与变量.而栈内存则是用来存储程序代码中声明为静态(static)(或非静态)
的方法.
2.JVM 中对象的生命周期,创建阶段,应用阶段,不可视阶段,不可到达阶段,可收集阶段,终结阶
段,释放阶段
3.避免在循环体中创建对象,即使该对象点用内存空间不大.
    for(int i=0;i<10000;++i){
            Object obj = new Object();
            System.out.println("obj="+obj);
    }
    应改成
        Object obj = null;
        for(int i=0;i<10000;++i){
            obj = new Object();
            System.out.println("obj="+obj);
    }
4.软引用的主要特点是具有较强的引用功能.只有当内存不够的时候,才回收这类内存,因此在
内存足够的时候,它们通常不被回收.它可以用于实现一些常用资源的缓存,实现Cache的功能
    A a = new A();
    SoftReference sr = new SoftReference(a);
    a = null;
    
    if(sr !=null){
              a = sr.get();
    }else{
            a = new A();
              sr = new SoftReference(a);
    }

5.弱引用对象与 Soft 引用对象最大不同就在于:GC 在进行回收时,需要通过算法检查是否回
收 Soft引用对象,而对于 Weak 引用对象,GC总是进行回收.

    A a = new A();
    WeakReference wr = new WeakReference(a);
    a = null;
    
    if(sr !=null){
              a = wr.get();
    }else{
            a = new A();
            wr = new WeakReference(a);
    }
6.共享静态变量存储空间
7.有时候我们为了提高系统性能,避免重复耗时的操作,希望能够重用一些创建完成的对象,利
用对象池实现.类似JDBC连接池.

8.瞬间值,序列化对象大变量时,如果此大变量又没有用途,则使用transient声明,不序列化此变
量.同时网络传输中也不传输.

9.不要提前创建对象
      void f(){
            int i;
            A a = new A();
            if(....){
                  a.showMessage();
            }
      }
      
      改成
          void f(){
            int i;
            A a = null;
            if(....){
                  //用到时才实例化
                  a = new A();
                  a.showMessage();
            }
      }
10 .(1)最基本的建议就是尽早释放无用对象的引用
              A a = new A();
              a = null; //当使用对象 a之后主动将其设置为空
        (2)尽量少用 finalize函数.
        (3) 如果需要使用经常用到的图片展,可以使用软引用.
        (4) 注意集合数据类型,包括数组,树等数据,这些数据结构对 GC来说,回收更为复杂,
        (5)  尽量避免在类的默认构造器中创建,初始化大量的对象,防止在调用其自类的构造器
时造成不必要的内存资源浪费.
        (6) 尽量避免强制系统做垃圾内存回收.
        (7) 尽量避免显式申请数组空间.
        (8) 尽量在合适的场景下使用对象池技术以提高系统性能,缩减系统内存开销.
11.当做数组拷贝操作时,采用System.arraycopy()方法完成拷贝操作要比采用循环的办法完成
数组拷贝操作效率高

12.  尽量避免在循环体中调用方法,因为方法调用是比较昂贵的.

13.  尽量避免在循环体中使用 try-catch  块,最好在循环体外使用 try--catch 块以提高系统性
能.
14.  在多重循环中,如果有可能,尽量将最长的循环放在最内层,最短的循环放在最外层,以减
少循环层间的变换次数.

15.  在需要线程安全的情况下,使用 List list    = Collections.synchronizedList(new ArrayList());

16.  如果预知长度,就设置ArrayList的长度.

17. ArrayList  与  LinkedList  选择,熟悉底层的实现原理,选择适当的容器.

18.  字符串累加采用 StringBuffer.

19.  系统 I/O 优化,采用缓冲和压缩技术.优化性能.

20.  避免在类在构造器的初始化其他类

21  尽量避免在构造中对静态变量做赋值操作

22.  不要在类的构造器中创建类的实例

23.  组合优化继承

24.  最好通过Class.forname()  动态的装载类

25. JSP 优化,采用 out 对象中的 print方法代替 println()方法

26 .采用 ServletOutputStream  对象代替JSPWriter对象

27.  采用适当的值初始化out  对象缓冲区的大小

28.  尽量采用 forward()方法重定向新的JSP

29.  利用线程池技术处理客户请求

30.Servlet优化
      (1)  通过 init()方法来缓存一些静态数据以提高应用性能.
      (2) 用 print()  方法取代 println()方法.
      (3) 用 ServletOutputStream  取代  PrintWriter.
      (4)  尽量缩小同步代码数量

31.  改善 Servlet应用性能的方法
        (1)不要使用 SingleThreadModel
        (2)使用线程池 ThreadPool

32. EJB 优化         实体EJB:
        (1)实体EJB中常用数据缓存与释放
        (2)采用延迟加载的方式装载关联数据
        (3)尽可能地应用CMP 类型实体 EJB
        (4)直接采用JDBC技术处理大型数据
        
33.  优化JDBC连接
        (1)设置合适的预取行值
        (2)采用连接池技术
        (3)全合理应用事务
        (4)选择合适的事务隔离层与及时关闭连接对象

34. PreparedStatemetn 只编译解析一次,而 Statement每次都编译解析.

35.  尽可能地做批处理更新

36.  通过采用合适的getXXX 方法提高系统性能

37.  采用设计模式.  


=================================================================
收集二:
Java代码优化方案 J2ME内存优化


从几本书上,N个网站上整理的一些JAVA代码优化方案,最近的项目只有1M内存可用,必须很抠门了~J2ME项目更要注意的

避免内存溢出

l 不用的对象释放(置空) 

如 :

a不为空时 a=new object()//这句代码执行时将有两个对象存在于内存中

较好的写法是a=null; a=new object();

不用的对象设置成null

l 内存溢出通常发生在构造函数中,在构造函数中变量在要用时再new,用完之后置null

一次性加载所有图片很容易造成内存峰值。

可以用 if(img==null){



Create…

}

l 考虑用静态工厂方法替代构造函数(但是,注意释放,单例模式的释放只能由自己来做)。

l 使用局部变量

l 图形重绘操作用部分重绘

l 避免在同一个类中通过调用get set来设置或调用变量,用public

l 避免在循环中生成同一个变量或调用同一个函数

l 常用变量尽可能用static final private

l 能用byte的就不用int,String

l 不要使用double

l 复制大量数据时用System.appaycopy()

l 避免使用泛型

l 尽量不使用try catch,必须使用时不要在循环体内写try catch 

l 字符串操作使用StringBuffer

代码2是代码1执行速度的两倍:

代码1:

String title=new String(“大家好”);

Title+=”欢迎”;

Title+=”阅读”

//会在栈中生成五个对象:“大家好”,“欢迎”,“阅读”,“大家好欢迎”,“大家好欢迎阅读”

代码2:

StringBuffer title=new StringBuffer(“大家好”);

Tltle.append(“欢迎”);

Title.append(“阅读”);

l StringBuffer的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再丢弃旧的数组。在大多数情况下,你可以在创建StringBuffer的时候指定大小,这就避免了在容量不够的时候自动增长,以提高性能。

l 使用零值做为判断条件

For(int i=a.length()-1;i>=0;i--) 优于 for(int i=0;i<a.length();i++)



l 不要重复初始化变量

 默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和 double变成0.0,逻辑值设置成false

l 乘法和除法用移位 ,除法比乘法慢,所以用乘于倒数来代替除法

 考虑下面的代码:

for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; } 

用移位操作替代乘法操作可以极大地提高性能。下面是修改后的代码:

for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; } 

l 传递尽可能少的参数到经常调用的方法

l 不要有空方法,或方法内代码很少而方法又很少调用

l 避免类型转换

使用Profiler去查找哪里需要优化














                                                                                                                                                                                          

      
    
分享到:
评论

相关推荐

    Java程序优化与数据竞争检测的研究.pdf

    Java程序优化与数据竞争检测的研究 本文主要研究Java程序优化与数据竞争检测的技术,旨在提高Java程序的性能和可靠性。Java语言由于具有一定的安全性和高效性,在不同平台都得到广泛应用。为了增加Java程序在实际...

    Java程序性能优化

    《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优...

    Java程序优化大全.pdf

    标题:“Java程序优化大全.pdf”描述:“Java程序优化大全.pdf”标签:“技术及资料”内容:Java程序优化方面的内容,包含了对Java程序中常见问题的优化策略和方法。具体包括了对集合类的使用优化,如Vector的使用;...

    java优化编程 java优化编程 java优化编程

    这包括避免冗余计算,减少不必要的对象创建,使用适当的数据结构和算法,以及遵循Java编程的最佳实践,如有效使用StringBuilder而非String进行字符串拼接,避免使用null检查可能导致NPE的代码。 2. **内存管理**:...

    JAVA优化编程

    《JAVA优化编程》一书深入探讨了JAVA编程中的性能优化技术,旨在帮助开发者提升应用程序的运行效率和系统资源利用率。在JAVA开发过程中,优化是必不可少的一环,它能确保程序在面对大规模数据处理、高并发场景时仍能...

    java程序性能优化

    java程序性能优化Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的...

    Java程序性能优化 让你的Java程序更快、更稳定

    Java程序性能优化是每个开发人员都需要关注的重要领域,它涵盖了多个方面,旨在提高代码执行效率,减少资源消耗,以及提升应用程序的稳定性和响应速度。在本文中,我们将深入探讨Java性能优化的关键点,帮助你的Java...

    《Java程序性能优化》(葛一鸣)PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一本关于Java程序性能优化的书籍,作者是葛一鸣,并提供了该书PDF版本的下载链接。虽然没有具体的书籍内容,但基于标题、描述以及通常这类书籍会涉及的主题,我们可以总结出...

    Java程序性能优化 让你的Java程序更快、更稳定附本书示例代码(清晰版)

    Java程序性能优化是每个开发人员都需要关注的重要领域,特别是在企业级应用中,高效稳定的Java程序能够显著提升用户体验,降低服务器资源消耗。这本书“Java程序性能优化 让你的Java程序更快、更稳定”提供了深入的...

    JAVA代码优化工具

    Java代码优化是提升应用程序性能的关键步骤,尤其是在大型企业级应用或者高性能服务中。优化能够减少内存消耗,提高程序运行速度,降低CPU使用率,并改善整体的用户体验。在Java开发领域,有多种工具可以帮助开发者...

    浅议Java程序优化的几种方法与成效.pdf

    浅议Java程序优化的几种方法与成效.pdf

    《Java程序性能优化:让你的Java程序更快、更稳定》完整扫描PDF版网盘链接

    一个优秀的程序员,不仅要会编写程序,更要会编写高质量... 专注于Java应用程序的优化方法、技巧和思想,深入剖析软件设计层面、代码层面、JVM虚拟机层面的优化方法 理论结合实际,使用丰富的示例帮助读者理解理论知识

    Java程序性能优化 让你的Java程序更快、更稳定pdf文档视频资源

    在Java编程中,性能优化涉及减少程序的响应时间、降低系统资源消耗以及提高并发处理能力等方面。这通常包括对代码的改进、数据结构的选择、算法的优化以及合理利用JVM特性。 PDF文档可能会涵盖以下几个关键知识点:...

    java代码优化编程

    在Java编程中,代码优化是一个关键环节,目的是使程序在有限的资源下更高效地运行。优化主要包括两个方面:减小代码体积和提高代码执行效率。以下是一些关于如何提高Java代码效率的具体策略: 1. 使用`final`修饰符...

    java程序性能优化-pdf+源码

    在Java编程中,性能优化是一个关键领域,因为这直接影响到程序的运行速度、资源消耗以及用户体验。书中可能涵盖了以下几个方面的知识点: 1. **内存管理**:包括对象创建与销毁的优化、垃圾收集机制的理解、内存...

    Java优化编程(第二版PDF)

    一本经典的关于java优化编程的书。通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做...

Global site tag (gtag.js) - Google Analytics