Ubuntu Java性能优化方法
String),优先复用对象(如使用StringBuilder代替字符串拼接);尽量使用基本数据类型(如int代替Integer)减少包装类开销。HashMap代替List用于快速查找),避免使用嵌套循环或复杂度高的算法(如O(n²)排序),降低CPU和内存消耗。InputStream、Connection),避免静态集合持有对象引用(如static Map缓存未清理),使用弱引用(WeakReference)管理缓存对象。-Xms)和最大堆(-Xmx)大小(建议设置为相同值,避免动态扩容带来的性能波动,如-Xms4g -Xmx4g);调整新生代(Young Generation)与老年代(Old Generation)比例(通过-XX:NewRatio,如-XX:NewRatio=2表示新生代占堆的1/3)。-XX:MaxGCPauseMillis设置最大停顿时间(如-XX:MaxGCPauseMillis=200);-XX:UseParallelGC启用。-XX:InitiatingHeapOccupancyPercent设置老年代占用触发GC的百分比,默认45%);启用GC日志(-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xlog:gc*=debug:file=gc.log)分析停顿时间和回收效率。vm.swappiness:降低交换分区使用(如sudo sysctl -w vm.swappiness=10,值越低越倾向于使用物理内存);fs.file-max:增加文件描述符限制(如sudo sysctl -w fs.file-max=100000),避免文件句柄耗尽;net.core.somaxconn:增大TCP连接队列长度(如sudo sysctl -w net.core.somaxconn=65535),提升网络并发能力。bluetooth、cups),减少系统资源占用(通过systemctl disable <service_name>)。jstat(查看GC统计信息,如jstat -gcutil <pid> 1000每秒刷新一次)、jmap(生成堆转储文件,分析内存泄漏,如jmap -dump:format=b,file=heap.hprof <pid>)、jstack(查看线程堆栈,分析死锁,如jstack <pid>)监控JVM运行状态。VisualVM(集成JDK工具,提供内存、CPU、线程可视化)、JProfiler(商业工具,深度分析内存泄漏和性能瓶颈)直观查看应用性能。GCViewer解析GC日志,分析GC频率、停顿时间;使用Java Flight Recorder (JFR)(JDK内置)记录应用运行数据,识别性能热点。addBatch()/executeBatch())或批量更新,降低网络和I/O开销。@OneToMany),使用懒加载(FetchType.LAZY)延迟加载,避免一次性加载大量数据。AsyncLogger)减少日志写入对主线程的影响,提升应用响应速度。ThreadPoolExecutor)管理线程,避免频繁创建和销毁线程(线程创建成本高);合理设置线程池大小(核心线程数=CPU核心数+1,最大线程数=CPU核心数*2)。ReentrantLock替代synchronized)、无锁数据结构(如ConcurrentHashMap)或CAS操作,减少线程间的锁竞争;避免在循环中持锁。ForkJoinPool)或并行流(stream().parallel()),提升CPU利用率。