java 如何 优化
优化 Java 代码的方法
减少对象创建
频繁创建对象会增加垃圾回收负担,影响性能。使用对象池或复用对象,例如通过 StringBuilder 代替字符串拼接。
合理使用集合类
根据场景选择高效的集合类,如 ArrayList 适合随机访问,LinkedList 适合频繁插入删除。避免在循环中频繁调用 size() 方法。
优化循环
减少循环内的计算和对象创建,将不变量提取到循环外。使用增强型 for 循环或迭代器遍历集合。
使用缓存
缓存频繁访问的数据,减少重复计算或数据库查询。可以使用 HashMap 或第三方缓存库如 Ehcache。
多线程优化
利用线程池管理线程,避免频繁创建和销毁线程。使用 ConcurrentHashMap 等线程安全集合减少锁竞争。
JVM 调优
调整堆内存大小
根据应用需求设置合适的堆内存(-Xms 和 -Xmx),避免频繁 GC。例如:
java -Xms512m -Xmx1024m -jar app.jar
选择合适的垃圾回收器
针对不同场景选择 GC 算法,如 G1 适用于大堆内存,ParallelGC 适合吞吐量优先的应用。
监控 GC 日志
启用 GC 日志分析垃圾回收情况:
java -Xloggc:gc.log -XX:+PrintGCDetails -jar app.jar
代码性能分析工具
使用 Profiler 工具
通过 VisualVM、JProfiler 或 Arthas 分析 CPU、内存和线程使用情况,定位性能瓶颈。
基准测试
使用 JMH 框架进行微基准测试,避免手工测试的不准确性。示例代码:
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class MyBenchmark {
@Benchmark
public void testMethod() {
// 被测代码
}
}
数据库优化
减少数据库交互
批量操作代替单条操作,使用 PreparedStatement 避免 SQL 解析开销。
索引优化
为查询频繁的字段添加索引,避免全表扫描。使用 EXPLAIN 分析 SQL 执行计划。
网络与 I/O 优化
使用 NIO
高并发场景下使用 NIO 或 Netty 框架提升网络性能,减少线程阻塞。

缓冲 I/O 操作
使用 BufferedReader 或 BufferedInputStream 减少磁盘 I/O 次数。






