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范围的依赖),减少应用启动时间和内存占用。