在调优前,需确保Ubuntu系统已安装合适版本的JDK(推荐OpenJDK 11及以上,稳定性与性能更优)。通过以下命令安装:
sudo apt update && sudo apt install openjdk-11-jdk
验证安装:
java -version
若需切换默认JDK版本,可使用update-alternatives命令。
-Xms:设置JVM初始堆内存大小(如-Xms512m表示初始512MB),避免应用启动时频繁申请内存。-Xmx:设置JVM最大堆内存大小(如-Xmx2g表示最大2GB),防止内存溢出(OOM)。建议-Xms与-Xmx设置为相同值,减少堆内存动态扩展的开销。-XX:NewRatio:年轻代(Young Generation)与老年代(Old Generation)的比例(如-XX:NewRatio=3表示年轻代占堆内存的1/4,老年代占3/4),适用于对象生命周期差异大的应用。-XX:SurvivorRatio:年轻代中Eden区与Survivor区(S0/S1)的比例(如-XX:SurvivorRatio=8表示Eden区占年轻代的8/10,每个Survivor区占1/10),调整新生代对象晋升老年代的阈值。-XX:+UseG1GC:启用G1垃圾回收器(Garbage-First),适用于大内存(>4GB)场景,平衡吞吐量与延迟(默认从Java 9开始作为首选GC)。启动Java应用时直接添加参数,例如:
java -Xms512m -Xmx2g -XX:+UseG1GC -jar your-application.jar
适用于测试或临时调整。
~/.bashrc(bash shell)或~/.zshrc(zsh shell)文件,添加:export JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseG1GC"
执行source ~/.bashrc使配置生效,后续启动应用时通过java $JAVA_OPTS -jar your-application.jar自动加载。/etc/environment文件(需root权限),添加:JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseG1GC"
执行source /etc/environment使配置对所有用户生效。垃圾回收(GC)是影响Java内存性能的关键因素,需根据应用场景选择合适的GC:
-XX:+UseG1GC。-XX:+UseParallelGC。GC参数调优示例:
-XX:MaxGCPauseMillis=200-XX:GCTimeRatio=4(表示GC时间占总运行时间的1/5)。内存调优不仅依赖JVM参数,还需优化代码减少内存消耗:
String拼接使用StringBuilder而非+),使用对象池(如数据库连接池)复用对象。ArrayList适用于随机访问,LinkedList适用于频繁插入/删除),避免使用HashMap的过大初始化容量导致内存浪费。synchronized块的使用(如用ConcurrentHashMap替代Hashtable),避免线程阻塞导致的内存占用增加。调优需结合监控数据迭代优化,常用工具:
jstat:监控GC情况(如新生代/老年代使用率、GC次数),示例:jstat -gc <pid> 1000 5 # 每1秒输出一次GC信息,共5次
jconsole/VisualVM:图形化监控内存、线程、GC等情况,适用于实时分析。top/vmstat:监控系统级内存使用(如top查看进程内存占用,vmstat查看系统内存交换情况)。调优流程:
-Xmx解决OOM,调整NewRatio优化年轻代/老年代比例);通过以上步骤,可有效优化Ubuntu环境下Java应用的内存使用,提升性能与稳定性。需根据应用的实际场景(如内存需求、延迟要求)灵活调整参数,避免盲目增大内存导致资源浪费。