Ubuntu上Java编译与运行性能优化指南
一 环境与工具链优化
readlink -f $(which java)echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrcsource ~/.bashrcsudo update-alternatives --config java,避免 PATH 混乱。mvn -T 1C clean package(按 CPU 核心数并行)org.gradle.parallel=true、org.gradle.workers.max=N(N≈CPU 核心数)noatime 减少元数据写入。二 JVM编译期与运行期参数建议
-Xms2g -Xmx2g;元空间按需限制,如 -XX:MaxMetaspaceSize=512m(Java 8 及更早可用 -XX:MaxPermSize)。-XX:+UseG1GC),可配合 -XX:MaxGCPauseMillis=200 设定目标停顿。-XX:+UseZGC,JDK 11+)或 Shenandoah(-XX:+UseShenandoahGC,视发行版与版本支持)。-XX:+TieredCompilation,加速启动与稳态性能达成。-XX:ParallelGCThreads、-XX:ConcGCThreads,减少 GC 对构建的干扰。-XX:MaxRAMPercentage=75.0),避免被 cgroup 误判。java -Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+TieredCompilation MyAppjava -Xms4g -Xmx4g -XX:+UseZGC MyApp三 系统与内核参数优化
ulimit -n 65535/etc/security/limits.conf 增加 * soft nofile 65535、* hard nofile 65535vm.swappiness(如 10–30),减少抖动;确保有合理 swap 以应对突发。noatime 挂载选项。net.core.rmem_max=16777216、net.core.wmem_max=16777216net.ipv4.tcp_rmem=4096 87380 16777216、net.ipv4.tcp_wmem=4096 65536 16777216net.core.somaxconn=4096、net.ipv4.tcp_max_syn_backlog=4096net.ipv4.tcp_fastopen=3sysctl -p 生效。四 构建流程与代码层面的优化
-T 1C 或按模块并行;Gradle 启用并行与配置缓存。target/、build/、node_modules/(若共存前端)等中间产物,避免重复处理。五 监控定位与持续优化
jstat -gc <pid> 1s、jstack <pid>、jmap -histo <pid> 观察 GC 频率、线程与热点分配。top/vmstat/sar 观察 CPU 绑定、内存压力、I/O 等待;结合 iostat -x 1 分析磁盘瓶颈。