Java性能优化技巧

这篇具有很好参考价值的文章主要介绍了Java性能优化技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 如果在静态构造器中有繁重的计算,也就是耗费CPU的逻辑代码,请检查其运行时间是否过度?如果是,将这些逻辑迁移到另外一个单独的帮助类中。

2. 在进行byte[]作为String的构造参数时,需要将byte数组的一部分做个复制拷贝,否则,构造器会为整个原始缓冲做一个临时拷贝;试图避免不必要的内存分配,因为在内存使用超过1G+以上时会影响程序的性能

3. 变量对于大多数程序是非常有用的,因为它们缩短了代码,但是当变量的所有成员已经确认是不变的常量,那么使用预编译的数组替代。

4. 尽可能使用StringBuilder替代StringBuffer。

5. 使用闪存SSD替代传统的硬盘HDD,这样你可以将你的应用程序从I/O-bound转变到CPU-bound,这对于设计到read/write流操作特别有用;现代操作系统都是在后台写数据,不会堵塞你的应用,你的写操作只有在操作系统写入磁盘的速度慢于你的应用产生数据的速度时,才会堵塞你的写操作请求

6. 如果你的内存中有字符串或带有String字段的对象的大量集合,在某些情况下,字少10%场景,这些字符串实际上可能会转换为基本类型的值,你可以使用Object字段替代你的String字段,使用其提供的pack/unpack方法在字符串和对象之间来回转换,这样节省内存。如果你不将字符串转换为基本类型,可以考虑将字符串转为UTF-8的byte[],可以随时将byte[]转回原始字符串。

7. 如果有大量重复的字符串,使用String.intern() 减少内存损耗,提高性能

8. 尝试使用Google protobuf 或类似编码技术编码你整数数据,特别是这些数据值很小的情况下,这样你会得到数据量大幅度减小后导致的低CPU损耗,能够帮助你提高每个时间单元中存储或读取更多消息数量。

9. 如果使用 array list/set/map 时,其key或值是基本类型,那么使用Trove的 maps/sets替代JDK maps/sets,可以节省大量内存。

10. 当你的应用堆heap大小超过32G时, JVM会切换到64位的对象引用,意味着你的应用已经结束了占用更少Heap空间的阶段。

11. 如果你使用内部类,缺省使用静态的内部类;如果你使用一堆小的集合Collection,那么试试使用 java.util.Collections.empty*/singleton*方法实现小集合的内存高效率存储;使用BitSet替代boolean的arrays/lists或一系列integer整数类型,bit set是内存和CPU缓存都很友好。

12. 不要在多线程中共享一个 java.util.Random实例,将其包装在ThreadLocal中,Java7中使用java.util.concurrent.ThreadLocalRandom替代java.util.Random 。

13. 如果你希望有快速的Base64编码器,使用Java 8的 java.util.Base64

14. 不要使用exception ,每个exception 启动需要1毫秒

15. 如果你使用:

if ( !set.contains( key ) )
{
    set.add( key );
    //some extra code here
}

复制

直接使用add更快:

if ( set.add( key ) ){
    //same extra code could be added here
}

复制

同样,contains+remove可以被remove直接替代。

16. 如果要使用压缩,考虑使用LZ4(https://github.com/lz4/lz4-java)

17. 使用ByteBuffer替代 ByteArrayOutputStream。

18. 如果你希望计算几天这样的短天数,那么基于int/long进行手工实现会更快些。

19. 使用Matcher 和 Pattern 替代String.matches, split, replaceAll, replaceFirst等方法。

20. 如果你希望有一个快速的LinkedList代码实现,考虑下面规则:

  • 使用ArrayDeque实现基于队列queue-based的算法
  • 使用LinkedList的ListIterator
  • 避免使用任何LinkedList方法接受或返回集合中元素的索引。
  • 再次检查是否有理由使用LinkedList

21. 如果使用ArrayList,考虑下面规则:

  • 将元素追加到集合尾部。
  • 也从尾部移除元素
  • 避免contains, indexOf 和remove(Object) 方法
  • 避免更多的removeAll和retainAll 方法
  • 使用subList(int, int).clear() 来清除集合中的一部分。

22.Java 8中使用G1垃圾回收机制时,使用减少字符串重复配置: -XX:+UseG1GC -XX:+UseStringDeduplication。文章来源地址https://www.toymoban.com/news/detail-511015.html

到了这里,关于Java性能优化技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .NET Core性能优化技巧

    .NET Core作为一个跨平台的开源框架,以其高效、灵活和可扩展的特性受到了广大开发者的青睐。但在实际开发中,如何确保应用程序的性能始终是一个关键的问题。本文将介绍十大.NET Core性能优化技巧,帮助开发者提升应用程序的性能。 1. 使用异步编程 .NET Core支持异步编程

    2024年02月19日
    浏览(40)
  • MongoDB 数据库性能优化技巧

    原文:MongoDB 数据库性能优化技巧 (techdatafuture.com) MongoDB 是一款灵活且可扩展的NoSQL数据库,为了提高其性能,我们可以采取一些优化技巧。本文将介绍一些MongoDB性能优化的关键点,包括索引的使用、查询优化、数据模型设计和硬件优化等。          1.合理使用索引     索

    2024年02月09日
    浏览(77)
  • 关于 Vue 项目性能优化技巧分享

    前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM;但 Vue 项目中仍然存在项目首屏优化、Webpack 编译配置优化等问题,所以我们仍然需要去关注 Vue 项目性能方面的优

    2024年02月04日
    浏览(36)
  • 即时通讯开发中的性能优化技巧

    即时通讯开发在如今的数字化社会中扮演着重要角色,然而,随着用户对即时通讯应用的需求不断增长,开发者们面临着使其应用保持高性能和可靠性的挑战。本文将探讨即时通讯开发中关键的性能优化技巧,帮助开发者们提升应用的用户体验和响应速度。 1. 建立高效的消息

    2024年02月10日
    浏览(36)
  • 一份Node.js性能优化技巧指南

    你是一个踏入后端开发领域的前端爱好者吗?🤔 准备好迎接在Node.js错综复杂的景观中惊险刺激的旅程吧!🎢 在这个探险中,我们将探索后端的无数奇迹,从使用Node.js框架快速创建自己的后端,到应对性能分析、测试,深入内存管理。💻🔍 加入我们,揭开C++插件的奥秘,征服子进程

    2024年02月21日
    浏览(47)
  • 提升性能:QML Canvas 绘图优化技巧

    减少绘制操作 : 当我们有一个动态更新的图形,例如实时更新的数据可视化图表,可以通过设置一个定时器来控制更新频率,而不是每次数据更新都重新绘制整个图形。 使用硬件加速 : 通过将Canvas的 renderTarget 属性设置为 Canvas.FramebufferObject 来启用硬件加速: renderTarget: 枚

    2024年04月17日
    浏览(44)
  • MySQL数据库性能优化技巧介绍

    MySQL是目前最流行和广泛使用的开源关系型数据库之一,随着数据量的增长和访问负载的提高,优化数据库性能变得至关重要,以确保系统能够高效地处理大量的并发请求。本文将记录一些MySQL数据库性能优化的技巧,提高数据库的运行效率,提升系统性能。 对于MySQL,最简单

    2024年02月08日
    浏览(134)
  • 一文速学-selenium高阶性能优化技巧

    最近写的挺多自动化办公的selenium程序没有做优化,执行效率不高,启动浏览器又慢但是又可能出现其他不可控的因素,总结来说虽然放心运行但是又没那么好用,项目是写完了最后还是需要优化结尾的。selenium程序优化空间还是非常大的,根据自己项目的需求来进一步精简,

    2024年01月16日
    浏览(40)
  • 性能优化常用的技巧,你都知道吗?

    在实际工作中,提升MySQL数据库的查询性能是非常重要的。除了基本的索引和查询优化技巧外,还有一些更深层次的优化方案可以进一步优化性能。 1. 数据库表设计优化 选择字段类型: 根据数据类型和范围,选择适当的字段类型。例如,使用 INT 代替 VARCHAR 存储数字,使用

    2024年02月05日
    浏览(79)
  • 提升应用性能的关键步骤——UniApp性能优化策略与技巧详解

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 chatgpt体验地址 描述:代码压缩和混淆是常用的性能优化手段。通过减小JavaScript、CSS和HTML文件的大小,可以降低加载时间和网络传输。 解释: 在构建UniApp应用时,确保开启代码压缩和混淆选项。 使用工具(如

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包