Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻。
好的分析工具能起到事半功倍的效果,利用分析利器JMC、JFR,可以实现性能问题的准确定位。
本文主要阐述如何利用JMC分析系统性能
JMC:Java Mission Control
JFR:Java Flight Recorder
JMC打开性能日志后,主要包括7部分性能报告,分别是一般信息、内存、代码、线程、I/O、系统、事件。其中,内存、代码、线程及I/O是系统分析的主要部分,本文会重点进行阐述。
启动JMC,打开生成的JFR性能日志
1. 一般信息,如下图所示
图中, 堆使用量、CPU总体占用率、GC暂停时间是非常重要的三个指标
对于Java应用而言,GC暂停时间是最值得关注的指标。
2. 内存信息
2.1 通过内存信息,我们可以清晰的看到垃圾收集器的类型,垃圾收集的暂停时间,包括最短暂停时间、平均暂停时间、最长暂停时间,以及更为重要的垃圾收集频率(垃圾收集的周期及STW时长)。
2.2 垃圾收集
垃圾收集的详细报告,详细描述了堆的回收信息,垃圾收集过程中的异常事件,此处不一一详述。
2.3 GC时间
详细描述GC时间相关的信息
2.4 GC配置
详细列出垃圾收集过程中,GC的配置信息,主要包括年轻代、老年代的GC类型,GC过程中的CPU状态及GC时间比率
3. 代码分析
代码分析是Java性能分析重点,通过代码分析,我们可以清楚的知道系统运行时,哪些类及方法被高频率的调用
3.1 热点方法
通过查看热点方法调用栈,我们可以清晰的了解到系统的主要计算资源消耗情况。
我们举例说明,如上图中的ConcurrentHashMap的containKey方法及get方法,而两个方法都会执行计算hashcode的功能。当我们的应用出现先判断containKey,然后执行get方法时,我们可以省略containKey,这样可以省略一次hashcode的计算,可以节约计算资源。
3.2 调用树
通过调用树,我们能以模块化的方式直观的看到系统运行状态。
通过上图,我们得知99.9%的热点方法是运行程序,这非常符合我们的预期,大家可以逐层展开方法,详细分析方法。例如:在本例中,我们发现List与Map之间的性能差异非常大,同样数量级的执行次数,List性能相较于Map就很差,这也符合我们的认知范围。
4. 线程
通过线程概述报告,我们可以得知CPU占用率的分布(系统占用率、应用程序+JVM占用率)和活动线程数,对于CPU占用率而言,应用程序应该占用99%的计算资源,而活动线程数应该控制在合理范围内(具体看应用)。
4.1 热点线程
热点线程一栏,详细列出了热点线程的数量及详情,通过详情,我们可以得知线程的执行情况。
4.2 线程争用
线程争用是解决应用性能最为关键的部分,在应用上线初期,我们可以通过解决线程争用初步实现系统性能的巨大提升。上图中的争用为GC导致,具体是由于使用G1时,设置的GC预期暂停时间过短导致的。
系统性能分析初期,我们可以首先定位线程争用的情况,可以初步达到性能的飞跃。
5. IO
IO作为系统的基础指标,IO过高会导致系统性能急剧下降,避免过度打印日志和生成大文件可以避免系统IO过高导致的性能问题。
本文就先写到这里,如果错误及问题,请各位大师多多指教,谢谢!
相关推荐
对于Java性能调优,JMC提供了以下步骤: 1. **配置飞行记录器**:根据需求选择合适的事件和数据收集设置,例如,如果关注内存使用,可以开启相关的内存事件。 2. **启动或连接到目标应用**:使用JMC连接到正在运行...
这次性能调优实战记录展示了从日志分析、内存监控、代码优化到JVM选择等一系列步骤,强调了在性能优化过程中,理解系统行为、定位问题源头、选择合适的工具以及不断迭代改进的重要性。对于从事性能测试和调优的...
Java性能调优是一个复杂的过程,涉及多方面的考虑,包括JVM配置、代码优化、数据库连接池管理、缓存策略等。理解垃圾收集机制(如新生代、老年代、CMS、G1、ZGC等)对于优化内存管理至关重要。此外,还要关注类加载...
【标题】"jmc-8.2.1_linux-x64.tar.gz" 是一个针对Linux平台的64位Java Mission Control(JMC)的...此外,为了充分利用JMC的功能,用户应熟悉Java性能调优的概念和技术,以及如何解读JMC提供的各种监控和分析数据。
综上所述,《实战JAVA虚拟机 JVM故障诊断与性能优化》涵盖了JVM的各个方面,从基本概念到高级技巧,从故障排查到性能调优,是Java开发者的必备参考资料。通过深入学习,开发者不仅能提升自己的技术水平,还能更好地...
在Java技术领域,有多种工具可以帮助开发者实现这一目标,其中Java性能调优工具箱和Java Mission Control(JMC)是两个重要的工具。 1. **Java性能调优工具箱**:这个工具箱包含了用于分析和优化Java应用程序性能的...
本文将基于标题“Java性能分析”展开讨论,结合标签“源码”和“工具”,探讨如何通过分析源代码和利用相关工具来提升Java应用程序的性能。 一、Java性能分析的重要性 Java性能分析是开发过程中的关键环节,它帮助...
本压缩包“Java诊断工具源代码.zip”包含了用于深入理解并优化Java应用程序的相关工具源代码,这对于学习和实践Java性能调优至关重要。下面我们将详细探讨其中涉及的一些关键知识点。 1. **JVM内置工具**:Java...
性能测试监控分析手册是针对初级性能测试人员设计的一份入门指南,旨在帮助他们理解和掌握性能测试监控的关键概念和工具。...通过学习和实践,初学者可以逐步成长为能够独立进行性能调优的专业人士。
JConsole、VisualVM和JMC(Java Mission Control)等工具能帮助我们查看GC日志,分析停顿时间和吞吐量,以便调整垃圾回收器参数,如新生代和老年代的比例、Survivor区大小等。 此外,永久代(Perm Gen)或方法区...
3. JFR(Java Flight Recorder)和JMC(Java Mission Control):Oracle JDK的高级诊断工具,用于收集和分析JVM运行时数据。 总结,JVM调优特别是对分代垃圾回收的理解和实践,是提升Java应用性能的关键。开发者...
为了更好地利用资源并提高程序的运行效率,对JVM进行性能调优是非常必要的。以下是一些常见的JVM性能调优技巧: 1. **调整堆内存大小**:合理设置初始堆大小(`-Xms`)和最大堆大小(`-Xmx`),以满足应用程序的...
- **JFR(Java Flight Recorder)和JMC(Java Mission Control)**:Oracle JDK提供的高级诊断和监控工具,用于收集JVM运行时数据,进行性能分析。 掌握这些JVM高级特性与最佳实践,不仅能提升Java应用的性能,也...
4. 动态调整:利用JDK提供的工具如JFR(Java Flight Recorder)、JMC(Java Mission Control)进行性能分析和诊断。 总结,Alibaba Dragonwell凭借其强大的性能、安全性和稳定性,成为开发者信赖的JDK选择。通过...
- **JFR (Java Flight Recorder)** 和 **JMC (Java Mission Control)**:Oracle提供的高级诊断和分析工具,适用于复杂的性能问题排查。 5. **JVM参数调整** - `-Xms` 和 `-Xmx`:设置堆的初始大小和最大大小。 -...
3. 性能调优:JDK 17.0.1包含JDK Mission Control(JMC)和Java Flight Recorder(JFR),它们是强大的性能分析工具,可以帮助开发者监控和优化应用性能。 五、总结 OpenJDK 17.0.1为Windows用户带来了最新的Java...
在Java开发中,JVM调优是提升应用程序性能的关键环节,尤其是在高并发、大数据处理等场景下,良好的JVM配置能显著提高系统效率。 1. **JVM概述** - JVM是Java语言的运行环境,它负责执行字节码并管理内存,为...
5. **线程分析**:在Java性能监控中,线程分析是非常重要的一环。通过分析线程的生命周期和状态,可以发现可能导致应用阻塞或性能下降的瓶颈。 6. **GC(Garbage Collection)调优**:Java的自动内存管理依赖于垃圾...
-诊断框架:利用JFR(Java Flight Recorder)和JMC(Java Mission Control)进行深度性能分析。 8. **WebLogic Server与数据库集成**: - JDBC数据源配置:连接到各种关系型数据库,实现数据访问。 - JMS与...
例如,使用字节码操作库如ASM或ByteBuddy进行动态代理,或者利用JIT(Just-In-Time)编译器的特性进行性能调优。 在“java和黑科技.zip”这个压缩包中,我们可以推测它包含了一些关于Java编程的高级技术和创新实践...