Ubuntu Java编译性能优化方法
一 基础环境优化
readlink -f $(which java)echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrcecho 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrcsource ~/.bashrcupdate-alternatives 切换系统默认 java/javac,便于在不同 JDK 间对比编译性能与兼容性。二 构建工具与并行化
-T 指定并行线程数,如 mvn -T 1C clean compile(按 CPU 核心数 1C 启动),或 -T 4 固定 4 线程。gradle.properties 中设置 org.gradle.parallel=true、org.gradle.workers.max=<N>(N 为 CPU 核心数或略低),并优先使用 gradle wrapper 固定 Gradle 版本以获得一致性与增量优化。~/.m2/repository 与 ~/.gradle/caches 在 SSD 上;避免频繁清理导致全量重编译。<dependencyManagement>(Maven)或 resolutionStrategy(Gradle)统一版本,降低重复解析与编译开销。compileJava),跳过测试与文档生成以缩短反馈时间。三 JVM 与容器参数
export MAVEN_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC" 或 export GRADLE_OPTS="-Xms1g -Xmx2g -Dorg.gradle.jvmargs=-Xms1g -Xmx2g -XX:+UseG1GC"。-Xms 与 -Xmx 设为相同值以减少堆动态扩展带来的抖动;选择 G1 GC 以在大堆与多任务并行场景下获得更好的吞吐与停顿平衡。-Xmx2g),避免因容器 OOM 或 CPU 限流导致编译中断或降速。四 系统与 I/O 优化
/etc/security/limits.conf 或 systemd 服务单元中设置 nofile(如 65535),防止大量并发文件访问受限。vm.swappiness=10),减少换页对编译过程的影响;确保构建节点拥有充足物理内存与 CPU 资源。jstat、jstack、jmap 等工具观察构建过程中 JVM 的 GC、线程与内存状况,定位异常停顿或内存压力来源。五 针对 OpenJDK 源码构建的专项优化
JAVA_HOME。bash configure 完成环境检测与依赖安装,随后使用 make 并行构建(如 make -j$(nproc)),可显著利用多核 CPU 提升构建速度。