Ubuntu Java运行速度优化方法
new String()
、new ArrayList()
),优先复用对象(如通过ObjectPool
对象池管理数据库连接、线程等资源);使用StringBuilder
代替字符串拼接(+
操作会生成大量临时String
对象),尤其在循环中效果显著。HashMap
替代ArrayList
进行快速查找,用LinkedList
替代ArrayList
进行频繁插入/删除),避免使用时间复杂度高的算法(如嵌套循环遍历大数据集)。InputStream
/OutputStream
、数据库Connection
、Session
等,建议在finally
块中关闭);避免静态集合(如static Map
)无限增长(静态集合生命周期与应用一致,会持续占用内存);移除失控的监听器(如GUI组件未注销的ActionListener
)。list.size()
),可提前缓存结果(如int size = list.size(); for (int i = 0; i < size; i++)
);使用增强型for
循环(for (String item : list)
)替代传统for
循环,减少索引计算开销。-Xms
(初始堆大小)和-Xmx
(最大堆大小)参数指定堆内存范围(建议设置为相同值,避免堆内存动态扩展带来的性能损耗,如-Xms4g -Xmx4g
);根据应用内存需求调整,避免堆内存过小(导致频繁GC)或过大(导致单次GC时间过长)。-XX:MaxGCPauseMillis=200
,单位毫秒),平衡吞吐量与低延迟;-XX:+UnlockExperimentalVMOptions -XX:+UseZGC
);-XX:+UseParallelGC
启用多线程垃圾回收。-XX:NewRatio=2
表示新生代占堆的1/3,老年代占2/3,可根据对象生命周期调整);启用GC日志(-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log
),通过日志分析GC频率与耗时,针对性优化。-XX:TieredCompilation
启用分层编译(兼顾启动速度与长期运行性能),或调整编译阈值(-XX:CompileThreshold
,默认1000次调用后编译热点代码)。sudo apt clean
)和临时文件(sudo rm -rf /tmp/*
),释放磁盘空间;使用sync
命令将缓存数据写入磁盘,避免数据丢失。systemctl list-unit-files --state=enabled
查看开机启动的服务,禁用不需要的服务(如sudo systemctl disable bluetooth
),减少系统资源消耗。/etc/sysctl.conf
文件,优化以下参数: vm.swappiness=10
(降低交换分区使用频率,避免内存不足时频繁换页);fs.file-max=100000
(增加系统最大文件描述符数,避免文件打开过多导致Too many open files
错误);net.core.somaxconn=65535
(增加TCP连接队列长度,提升网络并发性能)。 修改后执行sudo sysctl -p
使配置生效。jstat -gcutil <pid> 1000
每秒输出一次GC占比);jstack <pid> > thread_dump.log
)。vmstat 1
每秒刷新一次;iostat -x 1
每秒刷新一次。INSERT INTO table VALUES (?, ?), (?, ?), ...
)替代单条插入,减少数据库往返次数;文件操作时使用缓冲流(BufferedReader
/BufferedWriter
)减少IO次数。provided
范围的依赖),减少应用启动时间和内存占用。