1. 系统资源优化
sudo apt clean
清理APT缓存,删除/tmp
目录下无用临时文件,释放磁盘空间;使用bleachbit
等工具深度清理系统垃圾。systemctl list-unit-files --state=enabled
查看开机启动的服务,禁用不需要的服务(如cups
打印服务、bluetooth
蓝牙服务),减少系统资源占用。/etc/sysctl.conf
文件,添加或修改以下参数以提升系统性能:vm.swappiness=10
(降低内存交换频率,优先使用物理内存)、fs.file-max=65535
(增加系统最大文件描述符数,避免文件句柄耗尽)、net.core.somaxconn=4096
(提升TCP连接队列长度,改善网络性能);修改后执行sudo sysctl -p
使配置生效。2. JVM参数调优
-Xms
(初始堆大小)和-Xmx
(最大堆大小),建议两者设置为相同值(如-Xms4g -Xmx4g
),避免堆内存动态扩展带来的性能开销。-XX:+UseG1GC -XX:MaxGCPauseMillis=200
设置最大停顿时间(如200ms);-XX:+UnlockExperimentalVMOptions -XX:+UseZGC
;-XX:+UseParallelGC
启用。-XX:NewRatio
设置新生代与老年代的比例(如-XX:NewRatio=2
表示新生代占堆的1/3),优化年轻对象回收效率。-XX:TieredCompilation
启用分层编译(默认开启),提升热点代码的执行效率;若需更激进的优化,可调整-XX:CompileThreshold
(降低方法调用次数阈值,提前编译)。-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log
记录垃圾回收详情,便于后续分析GC频率与停顿时间。3. Java代码优化
String str = new String("hello")
),改用对象池(如Apache Commons Pool)或复用对象(如StringBuilder
代替String
拼接)。HashMap
代替TreeMap
提升查找效率、ArrayList
代替LinkedList
提升随机访问性能);避免使用时间复杂度高的算法(如嵌套循环遍历大数据集合,改用stream().parallel()
并行处理)。BufferedReader
、BufferedWriter
)减少磁盘IO次数;批量处理数据库操作(如JDBC的addBatch()
与executeBatch()
),避免频繁提交事务。finally
块中关闭文件流、数据库连接);使用弱引用(WeakReference
)管理缓存,防止缓存无限增长导致内存溢出。4. 系统配置优化
ulimit -n 65535
临时增加当前用户的文件描述符限制;永久生效需编辑/etc/security/limits.conf
,添加* soft nofile 65535
和* hard nofile 65535
。/etc/sysctl.conf
,添加net.ipv4.tcp_tw_reuse=1
(允许复用TIME_WAIT状态的TCP连接)、net.ipv4.tcp_max_syn_backlog=8192
(增加SYN队列长度),减少网络连接建立的开销。systemctl disable <service-name>
禁用不需要的服务(如apache2
、mysql
若未使用),减少系统后台进程的资源消耗。5. 使用性能分析工具定位瓶颈
jstat -gcutil <pid> 1000
每秒输出一次GC统计信息),分析GC频率与停顿时间。jstack <pid>
),分析线程阻塞、死锁等问题。