核心工具:JMH(Java Microbenchmark Harness)
JMH是专门针对Java代码的微基准测试工具,可精确测量热点方法的性能(如算法优化、代码片段执行时间),支持纳秒级精度。其测试结果受JVM预热、即时编译(JIT)等因素影响较小,适合量化分析代码性能差异。
典型场景:评估某段Java代码(如排序算法、字符串处理)的优化效果,对比不同实现方式的性能。
使用步骤:通过Maven archetype生成基准测试项目,编写带有@Benchmark注解的测试方法,配置预热迭代次数(避免JIT影响)、测量迭代次数等参数,运行后生成性能报告。
核心工具:JMeter
JMeter是开源的负载测试工具,可模拟大量并发用户访问Java应用(如Web接口、RESTful服务),测试其在高负载下的响应时间、吞吐量、错误率等指标。支持HTTP、HTTPS、数据库等多种协议,可通过GUI模式编写脚本或非GUI模式批量执行。
典型场景:测试Java Web应用的并发处理能力,验证其在高用户量下的稳定性。
使用步骤:安装JMeter后,通过GUI模式添加线程组(设置并发用户数、循环次数)、HTTP请求(配置URL、方法、参数),添加监听器(如聚合报告、查看结果树),保存为.jmx脚本后在非GUI模式下运行(jmeter -n -t script.jmx -l result.jtl),最后生成HTML格式的测试报告。
常用工具组合:
jps列举Java进程、jstat监控GC/类加载情况、jmap生成堆转储文件分析内存泄漏、jstack查看线程堆栈排查死锁);top(实时查看进程CPU/内存占用)、vmstat(监控系统整体资源使用)、iostat(分析磁盘I/O性能)等命令,了解系统瓶颈;jmap生成堆转储,用VisualVM分析大对象)、排查线程死锁(通过jstack查看线程堆栈)。核心工具:stress、sysbench
核心工具:JUnit、TestNG
JUnit(Java主流单元测试框架)和TestNG(支持更复杂的测试场景,如依赖测试、参数化测试)用于测试Java代码的单元功能(如方法逻辑、类方法),确保代码的正确性。虽然不属于传统性能测试,但单元测试的执行效率(如测试用例运行时间)也是Java性能的一部分。
典型场景:验证Java方法的正确性,同时关注测试用例的执行时间(如优化慢测试用例)。
核心工具:iperf
iperf用于测量服务器与客户端之间的TCP/UDP带宽性能,帮助评估Java应用的网络传输效率(如分布式系统中的节点间通信)。
典型场景:测试Java分布式应用的网络带宽瓶颈,优化网络配置(如调整TCP窗口大小)。
使用步骤:在服务器端运行iperf -s(启动服务端),在客户端运行iperf -c server_ip(连接服务器并测试带宽),生成网络性能报告。