`
jbeduhai
  • 浏览: 504297 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

Java优化编程的37条法则

阅读更多
引用
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. 采用设计模式.
































分享到:
评论

相关推荐

    Web 2.0 编程思想:16条法则

    ### Web 2.0编程思想:16条法则 #### 法则一:明确目标与需求 在开发任何Web 2.0应用之前,需要明确其核心价值与目标。这包括确定应用程序的主要功能(如标签、评论、编辑页面等),并确保这些功能能够满足用户的...

    多目标优化算法java.zip_affect4gx_java多目标优化_优化_多目标优化java_多目标优化算法

    具体到Java编程,JMetal库的使用需要了解基本的Java编程知识,以及如何构建和调用优化算法。开发人员可以利用JMetal提供的API创建自己的多目标优化问题实例,然后选择合适的算法进行求解,并通过结果分析找出最佳的...

    Java数值计算算法编程

    在Java编程领域,数值计算算法是至关重要的,特别是在科学计算、数据分析、工程应用以及金融建模等场景。Java作为一种跨平台、面向对象的编程语言,提供了丰富的库和工具来支持复杂的数值计算。以下是对"Java数值...

    java并发编程常识

    Java并发编程是编程领域中处理多任务同时执行的技术,特别是在多核处理器上,能够让程序更加有效地利用计算资源,提高程序处理速度和响应能力。在Java中,并发编程主要依赖于JVM的内存模型、线程安全、可见性、原子...

    计算机编程的24条法则

    计算机编程的24条法则是一组旨在提升编程质量和效率的原则,涵盖了从软件设计到测试、维护等多个方面。以下是对这24条法则的详细解读: 1. **致命异常处理**:在遇到致命错误时,程序不应突然终止,而应提供优雅的...

    Java性能优化实战视频全集

    **4.10 常见Java代码优化法则** - **代码层面**: 如减少循环中的计算开销、使用更高效的数据结构等。 - **设计层面**: 采用合适的设计模式,提高代码的可扩展性和可维护性。 #### 五、高级进阶篇 **5.1 JVM垃圾...

    JAVA编程规则总结

    ### JAVA编程规则总结 #### 一、编程原则 1. **不要自我重复** 这是最基本的编程原则之一,意味着避免重复的代码。在Java编程中,可以通过多种方式来减少代码重复,如使用循环语句、函数、类等。一旦发现代码中...

    java数值计算算法编程

    Java数值计算算法编程是计算机科学中的一个重要领域,它涉及到如何使用Java语言进行高效且精确的数学运算。在Java中,数值计算涵盖了广泛的算法和技术,包括基本的算术运算、复杂数学函数、线性代数、微积分、概率...

    Java学习编程语言的五个关键技巧.docx

    学习Java编程语言是一个系统的过程,涉及多个核心领域和实践技巧。以下是对标题和描述中提到的五个关键技巧的详细说明: 1. **理解面向对象编程(OOP)**: 面向对象编程是Java的基础,它将现实世界中的问题抽象为...

    Java实现基于Johnson法则的流水作业调度

    这里我们关注的是基于Johnson法则的流水作业调度,这是一种优化作业执行时间的策略。Johnson法则通常用于解决有限制条件的作业调度问题,比如最小化总的完成时间或最大化系统的吞吐率。Java作为一种多平台的编程语言...

    基于Java与Python的面向对象编程的基本特征研究.pdf

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程...同时,了解Java内存模型也对优化内存使用和处理性能瓶颈有着直接的帮助。无论是对于学生还是专业开发者,这种基础知识的学习和掌握都是必不可少的。

    Java命名法则.doc

    Java命名法则是Java编程中非常重要的一个方面,它规定了如何为包(Package)、类(Class)、变量(Variables)、常量(Static Final Variables)、参数(Parameters)以及数组(Arrays)等进行命名,以提高代码的...

    JAVA数值算法(近百种算法)中文文档 实例

    Java数值算法是编程领域中的重要组成部分,特别是在科学计算、数据分析以及工程应用中起着关键作用。周长发编写的这份中文文档提供了近百种算法的详细解释和实例,为Java开发者提供了一个宝贵的参考资料库。 首先,...

    java,百钱百鸡,MyEclipse

    在这个问题中,我们需要使用编程来解决一个组合优化问题:假设鸡的价格是1元,鸡蛋的价格也是1元,如何用100元钱买下尽可能多的鸡和鸡蛋,使得购买的鸡和鸡蛋总数达到100个。 【描述】在Java编程环境下,我们通常会...

    java疯狂讲义,PDF版最新全版

    根据提供的文件信息,“java疯狂讲义,PDF版最新全版”,我们可以推断这是一份针对Java编程语言的全面教程或讲义。这份讲义可能是由一位资深Java开发人员或者教育工作者编写,旨在帮助初学者乃至有一定基础的学习者...

    JAVA编程模式与范例_高级应用开发

    在Java编程领域,模式与范例是理解和提升高级应用开发能力的关键。本书“JAVA编程模式与范例_高级应用开发”旨在深入探讨Java语言中的设计模式和最佳实践,以帮助开发者构建更高效、可维护和扩展性强的软件系统。...

    Google Java编程风格指南

    ### Google Java编程风格指南知识点详解 #### 一、概述 Google Java编程风格指南是一份详细的文档,旨在统一和规范Google内部以及外部开发者编写的Java代码风格。这份文档不仅限于编码格式上的美观,还包括了一些...

    基于java模式下的编程要诀 代码规范 面向对象

    在Java编程世界里,面向对象(Object-Oriented Programming,OOP)是核心的设计原则,而编程模式则是解决常见问题的成熟方案。本资料“基于java模式下的编程要诀 代码规范 面向对象”深入浅出地阐述了如何在Java环境...

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

    客观原因主要是垃圾收集器的回收机制的作用,垃圾收集器对垃圾的判断法则与普通编程人员不同,容易产生内存泄露。主观原因主要是人为因素造成的,比如编程人员的编程能力不足,或者编程时的专注度不够,这些都会使得...

    About java

    《关于Java编程的知识详解》 Java,作为世界上最流行的编程语言之一,因其跨平台性、安全性以及强大的社区支持而备受赞誉。"Think in Java"是一本经典的编程书籍,它旨在帮助开发者深入理解Java语言的本质和设计...

Global site tag (gtag.js) - Google Analytics