📜  如何提高Java应用程序的性能?

📅  最后修改于: 2021-10-28 02:51:47             🧑  作者: Mango

最初, Java比 C 慢近 100 倍。后来开始使用 JVM 后,性能得到了提高。 Java是一种解释型语言,因此它生成中间字节码。 Java具有用户友好的用户界面,并且与平台无关。 Java支持面向对象编程,通过它我们可以实现真实世界的示例。 Java有一个内置的多线程设施,这对任何程序的整体执行都非常有帮助。 Java支持分布式编程,因此受到大多数开发人员的喜爱。它还具有自动垃圾收集功能。 Java省略了 C++ 的一个称为指针的特性。 Java是可移植的。 Java虚拟机 (JVM) 是Java性能背后的主要支柱。

Java应用程序的性能基于以下因素进行判断:

1. 业务交易:业务交易是对用户体验最能反映的衡量标准,因此它是判断应用程序性能的重要因素。如果存储空间没有弹性,那么首先会影响业务交易。

2. 外部依赖:外部依赖会以意想不到的方式显着影响Java应用程序。它可以以各种形式出现,例如 Web 服务、小程序、数据库,并且我们的Java应用程序通过它们进行交互。我们可以控制外部依赖项的配置,因此当特定依赖项无法工作时了解问题很重要,我们应该想出一个安全机制来克服这个问题。

3.缓存策略:从内存中提取数据总是比通过网络调用来提取数据更快(例如:从数据库服务器检索数据)。缓存提供了一种在本地存储对象实例的机制,从而可以更快地访问数据。在决定缓存策略时要考虑的重要事项是正确调整缓存大小,并应确保不应将大量数据加载到缓存中。

4. 垃圾收集: Java的垃圾收集对用户非常有帮助,因为它自动释放内存而不是手动管理它(C、C++ 等语言)。然而,垃圾收集既是福也是祸。当我们使用完一个对象时,我们只需删除对该对象的引用,垃圾收集就会自动为我们释放它。当没有对该内存的引用时,垃圾收集器会自动释放内存。但是,当分配内存时,该内存的引用会在内存释放之前被删除。调整您的堆大小和垃圾收集策略以满足您的应用程序行为非常重要。

5. 应用拓扑:判断Java应用性能的最终性能要素是应用拓扑。由于云的到来,应用环境正在根据用户需求进行高低调整。业务事务负载和容器性能是我们制作应用拓扑时要考虑的两个重要指标。分析每个应用程序组件的性能并相应地调整拓扑非常重要。

提高Java应用程序性能的方法

  • 谨慎使用正则表达式:正则表达式相对便宜且方便。如果您在计算密集型代码部分使用正则表达式,我们至少应该将参考模式存储在缓存中。
  • 尽可能避免递归:在许多情况下,递归会导致麻烦。所以我们应该尽量减少递归的使用,或者应该想出一些机制来识别递归引起的问题。
  • 性能测试套件:此测试运行将有助于识别应用程序的功能和性能副作用。如果您对应用程序有太多外部依赖项(如数据库或缓存),则此测试很重要。
  • 使用 StringBuilder 连接字符串:使用 StringBuffer 代替字符串对于性能非常有用。如果您进行大量字符串操作,普通字符串会减少内存,因为它会产生大量垃圾。
  • 使用堆栈避免堆:提高应用程序的性能是使用原始类型而不是它们的包装类。建议将值存储在堆栈中而不是堆中,以减少内存消耗并更有效地处理它。
  • 并发控制:同时运行多个程序会导致性能下降。正确使用数据访问框架将提高数据访问层的性能,这种策略可以为整个应用程序带来优化收益。
  • 缓存:重用资源更有效,有助于提高应用程序的性能。缓存是提高响应能力的好方法,您可以使用它来优化Java应用程序的性能。
  • EnumSet:也可以称为EnumMap。在这个实现中,我们有一个索引值数组而不是哈希表。如果值的数量比较少,你真的应该考虑使用 EnumSet 或 EnumMap,而不是常规的 HashSet 或 HashMap。
  • 线程处理:避免创建和销毁太多线程。创建和处置线程是 JVM 性能问题的常见原因,因为创建和销毁线程对象相对繁重。
  • JDBC 性能:关系数据库也是Java应用程序性能的另一个原因。 JDBC 批处理有助于有效地处理数据库。