`
xiaolanglang123
  • 浏览: 26019 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类

Java开发者需知道的性能小技巧

阅读更多

今天所分享的内容可能也是一些老的知识了,但是还是要拿出来跟小伙伴们再普及下Java编程技巧方面的相关操作。
 
局部决定整体一个应用的整体性能取决于每个组件的性能。下面是一些帮助你提高应用性能的Java编程技巧:
 
避免重复创建对象
 
为什么:
 
l  更少的对象会需要更少的垃圾回收
l  使用的空间越少,应用的性能越好
 
怎么做:
 
l  重复利用一个对象,而不是在每次需要的时候都去创建一个功能一样的对象
l  (这样做)
l  String s = “No longer silly”;
l  (不要这样)
l  String s = new String(“silly”);
l  不可变类中既提供构造函数,又提供了静态工厂方法,优先考虑使用静态工厂方法。
l  复用那些一旦初始化(使用静态初始化)就不会改变的对象
 
避免循环引用
为什么:
 
l  一组相互引用的对象,如果他们没有被其他对象直接引用的话,它们会变得不可达,这样会导致它们一直都保留在内存里。
 
怎么做:
 
l  你可以使用强引用来表示“父到子“的引用关系,使用弱引用来表示“子到父”的引用关系。
 
使用==操作符来替代equals(Object)方法
为什么:
 
l  ==操作符的性能更好
 
l  例如,对于字符串比较,equals()方法会去比较字符串对象里的字符。==操作符会比较两个对象的引用,来比较它们是否指向同一个实例。
 
怎么做:
 
l  当且仅当a == b 的时候才会有a.equals(b)
 
l  例如,对于重复调用的地方,使用静态工厂方法来返回相同的对象。
 
清除无用的对象的引用
为什么:
 
l   无用的对象引用会导致更多的垃圾回收动作,从而降低性能
l   无用的对象引用会导致更多的内存占用,从而降低性能
怎么做:
l   如果一个引用时废弃的话,把它设置为null
l   (这样做)
(本图为:Java开发者需知道的性能小技巧之清除无用的对象的引用)
(本图为:Java开发者需知道的性能小技巧之清除无用的对象的引用)
 
避免使用finalizer
为什么:
·         垃圾回收器需要单独记录等待终结的对象
·         调用finalize方法也有一定的开销
·         Finalizer是不安全的,因为它有可能会复活一个对象,这样会干扰垃圾回收。
避免使用引用对象
为什么:
·         和finalizer一样,垃圾回收器需要特别处理软引用、弱引用以及幽灵引用。
·         尽管引用对象在某些方面很有作用,例如,简化cache的实现,但是大量引用对象的存在会使得垃圾回收运行缓慢。
·         记录一个引用对象的开销远远超过一个普通对象(强引用)的开销
避免使用对象池
为什么:
·         对象池不仅会使得更多的数据对象保持活动,同时会使得对象的存活时间延长
·         值得注意的是,大量存活的数据对象的处理是GC的瓶颈,GC被优化成适合于处理许多寿命较短的对象
·         并且,创建新的对象而不是保持旧的对象存活,会对缓存的局部性有益
·         不过,在一个包含大量大对象的环境下,例如大的数组,性能或许会因为使用对象池而有所提升。
选择好的算法和数据结构
为什么:
·         考虑一下通过链表来实现队列的场景
·         即使你的程序不需要遍历整个链表,但是垃圾回收器还是需要这样做的。
·         如果元素的封装者没有把元素没有把元素放在内存中邻近的位置,这样会破坏缓存局部性。因而会导致程序长时间的暂停,尤其是对象的指针分散在一个很大的堆区时,垃圾回收器会在标记阶段追随指针的时候频繁遭遇缓存失效。
避免使用System.gc
为什么:
·         Java语言规范里没有保证调用System.gc会做什么事情。如果它规定了的话,或许会超出你的期望,也或许每次调用都做不同的事情。
避免使用太多的线程
为什么:
·         进程上下文切换的次数会随着要调度的进程的数目相应地增长,这样会对性能有隐性的影响。
·         例如,Intel A-64处理器上的本地线程上下文的大小大概是几千KB
避免使用竞争锁
为什么:
·         竞争锁一般都是程序的瓶颈,因为它的出现意味着多个线程想访问同一个资源或者执行同一段代码。
避免不需要的异常
为什么:
·         异常处理会占用一定的事件,并且会打断程序的正常执行流程。
·         作者曾经遇到这样一场景,在客户的应用里,一个正常的执行流程每秒会抛出成千上万的NullPointerException。这个错误被纠正后,应用的性能里面有了一个数量级的提升。
避免使用大对象
为什么:
·         大对象有时候需要直接在堆而不是在线程本地存储区(thread local areas, TLA)进行内存分配。
·         大对象直接在堆上分配是有坏处的,因为它会更快地产生内存碎片。
·         在虚拟机(例如JRockit)上分配大对象会降低性能,因为分配内存的时候会使用堆的全局锁。
·         过度使用大对象会造成频繁的全栈压缩,这样做是具有破坏性的,而且这样会导致导致所有的线程暂停很长一段时间。
 
以上内容就是小编再次为java开发的小伙伴们普及的关于编程技巧的相关内容,应该大部分小伙伴们都了解过了,还是希望刚接触开发的小伙伴们多学习下。

 

文章来源于:http://www.alqsoft.com/xinwenzixun/javakaifa/2014/0710/133.html

分享到:
评论

相关推荐

    提高java代码性能各种技巧

    Java 代码性能优化是每个 Java 开发者都需要掌握的重要技能。以下是对 Java 代码性能优化的各种技巧的总结: 字符串池的实现 在 Java 中,字符串池(String Intern Pool)是通过使用唯一的共享 String 对象来使用...

    给Java开发者的10条戒律

    7. 持续学习和更新知识:技术在不断进步,Java 开发者应时刻关注最新的技术和最佳实践,例如,学习并掌握 Java 8 及以上版本的新特性,了解并发处理、内存管理以及性能优化的技巧。 8. 编写可测试的代码:编写模块...

    Java实际开发中的小技巧汇总

    在Java实际开发中,开发者经常会遇到各种挑战,需要掌握一些实用的小技巧来提高代码质量、提升效率。以下是一些从博客文章...通过不断学习和实践这些技巧,Java开发者可以提升自己的专业水平,写出更高质量的代码。

    面向Java开发者的函数式编程

    ### 面向Java开发者的函数式编程 #### 一、为什么选择函数式编程? 在当前的软件开发领域,函数式编程(FP)已经成为一种重要的编程范式,无论是编写并发程序还是处理大数据问题,FP都能提供高效且简洁的解决方案...

    基于Java语言实现的深度学习框架,方便Java开发者学习.zip

    "基于Java语言实现的深度学习框架,方便Java开发者学习.zip" 这个压缩包文件,显然是为了帮助Java开发者更好地理解和应用深度学习。 Deeplearning4j 是一个开源的、企业级的深度学习库,专门为Java和Scala设计。它...

    Java性能优化技巧集锦

    本文将深入探讨Java通用篇、J2EE篇、GUI篇、EJB篇以及缓存优化等方面的知识点,旨在帮助开发者实现更高效的代码。 一、Java通用篇 在Java通用性能优化中,首要任务是对代码进行重构和优化。避免过度设计,简化逻辑...

    MAT Eclipse MemoryAnalyzer java性能分析

    MAT,全称Memory Analyzer Tool,是由Eclipse基金会开发的一款强大的Java内存分析工具。它主要用于诊断Java应用程序中的内存泄漏和理解对象内存...因此,掌握MAT的使用技巧是每个Java开发者提升专业技能的重要一环。

    Java习惯用法总结编程小技巧共14页.pdf.zip

    10. **设计模式**:Java开发者应熟悉常见的设计模式,如单例、工厂、观察者、装饰器、代理等,这些模式有助于编写可维护和扩展的代码。 11. **注解(Annotation)**:注解是元数据的一种形式,可以帮助编译器或运行...

    大话JAVA性能优化

    在《大话JAVA性能优化》的PDF文档中,你将找到这些方面的详细讨论和实例分析,它不仅涵盖了理论知识,还提供了实战技巧和工具使用,是Java开发者进行性能优化的宝贵参考资料。通过深入学习和实践,开发者可以提升...

    Java性能优化技巧集锦.rar

    "Java性能优化技巧集锦"可能包含了多个方面的内容,旨在帮助开发者掌握如何在Java平台上实现最优的性能表现。 首先,Java性能优化的核心在于理解和运用JVM(Java虚拟机)的工作原理。这包括了解类加载机制、内存...

    4本高清中文版Java性能优化经典书籍

    Java性能优化是IT行业中至关重要的一个领域,尤其是在大型企业级...通过阅读和学习这四本书籍,开发者不仅可以掌握Java性能优化的基础知识,还能了解到最佳实践和实用技巧,从而在实际工作中有效地提升软件系统的性能。

    Java 性能优化 一书源码

    Java性能优化是软件开发中的一个关键领域,尤其是在大型企业级应用和高并发系统中。《Java性能优化》一书...通过这些知识点的学习和实践,开发者可以提升Java应用的性能,减少资源消耗,确保系统的稳定性和响应速度。

    优化Java堆大小的5个技巧

    ### 优化Java堆大小的五个技巧...这些技巧不仅有助于解决常见的OutOfMemoryError等问题,还能显著提高Java应用的整体性能。在实践中,开发者应当结合具体的项目需求和技术背景,灵活运用这些技巧来优化应用的内存使用。

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

    这本书“Java程序性能优化 让你的Java程序更快、更稳定”提供了深入的洞察和实用技巧,帮助开发者提升Java程序的运行效率。 首先,我们来探讨Java性能优化的基本原则。性能优化的目标不仅仅是提高速度,更重要的是...

    java性能监控

    【Java性能监控】 Java性能监控是针对Java应用程序的性能分析和优化过程,目的是确保程序运行高效,资源使用合理。在Java环境中,性能监控通常包括CPU使用率、内存使用情况、线程状态、垃圾回收(Garbage ...

    JAVA性能优化权威指南

    总的来说,《JAVA性能优化权威指南》全面覆盖了从JVM配置、代码优化、数据库优化、网络I/O到监控工具的各个方面,是Java开发者进行性能优化的必备读物。通过深入学习这本书,开发者不仅可以提升个人技能,还能有效...

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

    《Java程序性能优化》这本书是Java开发者不可或缺的参考资料,它深入浅出地讲解了如何提升Java应用程序的效率和稳定性。本书结合理论与实践,既包含了基础的性能优化原则,也探讨了高级的优化技巧,适合从初级到中级...

Global site tag (gtag.js) - Google Analytics