Java 性能优化的五大技巧
让我们开始吧
性能优化取决于多个因素,包括垃圾收集、虚拟机和底层操作系统(OS)设置。有多个工具可供开发人员进行分析和优化时使用,你可以通过阅读 Java Tools for Source Code Optimization and Analysis 来学习和使用它们。如果你正苦苦挣扎于术语和 Java 的原理,可以先去查看 Livecoding Java category page,上面有直播,存档的视频,以及一些其他有用的信息。
“视情况而定”
必须要明白的是,没有两个应用程序可以使用相同的优化方式,也没有完美的优化 java 应用程序的参考路径。使用最佳实践并且坚持采用适当的方式处理性能优化。想要达到真正最高的性能优化,你作为一个 Java 开发人员,需要对 Java 虚拟机(JVM)和底层操作系统有正确的理解:
- JVM 和底层操作系统:Java 虚拟机是任何 Java 程序的家。阅读 JVM internals guide 了解更多有关于 JVM 内部和操作系统差异的内容。
- JVM 分布模型:Java 分布模型为您的应用程序处理多个JVM实例。分布模型提高了应用程序的性能,因为它获得更多的资源来工作。你可以用两种方法继续优化。第一种方法是在一个堆大小为2GB或8GB的单服务器运行多个 JVM。第二种方法是在多个服务器上运行单个 JVM。正确方法的选择取决于多个因素,包括可用性和响应性。
- JVM 体系结构:选择正确的 JVM 体系结构对于性能来说是很重要的。你可以选择 64 位或者 32 位的 JVM 机器。 一般来说,32 位 JVM 的性能比它对应的 64 位 JVM 要好。 只有当你需要的堆大小大于 3 GB 时,才选择 64 位的 JVM。
1. 调整垃圾收集(GC)
由于垃圾收集的复杂性,很难发现你的应用的准确性能.不过,如果你真的想优化你的应用,你应该相应地处理垃圾收集.通用的准则是调整GC设置并同时执行性能分析.
一旦你对结果感到满意,你可以停止该过程并寻求其他优化方式.确保除了在平均事务处理时间之外,你还留心了异常值.这些异常值是造成Java应用缓慢的真正的罪魁祸首并且很难找到.
2. 正确地选择适合你的GC算法
让我们更深入地探讨GC优化.毕竟,GC优化是要处理的整个优化问题中最基本的.目前,Java中有四种供你选择的垃圾收集算法.每种算法满足不同的需求,因此你要选择(适合你的需求的).很多开发人员正是因为不了解GC算法而未能优化他们的应用.
3.Java 堆
Java内存堆在迎合内存需求方面担任了至关重要角色.通常更好的做法是初始时分配最小的堆,然后通过持续的测试不断增加它的大小.大多数时候优化问题都可以通过增加堆的大小解决,但如果存在大量的GC开销,则该解决方案不起作用.
4. 关键应用优化
关键代码优化是优化你的Java应用最好的方式.如果你的应用对GC和堆优化没有反应,那么最好是做架构改进并关注于你的应用是如何处理信息的.使用聪明的算法并管理好对象就能解决大量的问题,包括内存碎片,堆大小问题和垃圾收集的问题.
5.使用最优的函数
Java提供了多个函数来提升算法效率.如果你使用StringBuilder代替简单的String,你可以得到微乎其微的性能提升.不过,我们还有其他方式在代码层面进行优化.让我们看看下面这些优化方法.
- 使用StringBuilder代替+操作符.
- 避免使用iterator().
- 多使用栈带来的好处.
- 避免使用正则表达式,使用 Apache Commons Lang作为代替.
- 远离递归.递归会占用大量资源!
.查看更多关于代码的优化 Top 10 Easy Performance. Optimisations in Java.
结论
java的性能优化可是一个大课题, 藉着这片文章抛砖引玉。如果您认为文章还需要添加补充,别忘了在下面的评论中分享您的观点。