CentOS上提升Java编译速度的可落地方案
一 构建链与并行化
export MAVEN_OPTS="-T 1C"(按CPU核心数并行);或使用 -pl/-am 减少不必要的模块编译。gradle.properties 中加入:org.gradle.parallel=true、org.gradle.daemon=true、org.gradle.workers.max=4(按CPU核心数设置)。javac --release N 指定目标版本,减少不必要的跨版本兼容处理开销。sudo yum install -y ccache && export PATH=/usr/lib64/ccache:$PATH。二 JVM与构建进程的内存与GC设置
export MAVEN_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC";Gradle 可用 org.gradle.jvmargs 设置同等参数。free -m、top/htop 观察可用内存与 swap 使用;必要时结合 GC 日志分析停顿与回收效率。三 系统与I/O优化
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=4096
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
echo '/var/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
vm.swappiness(如 10–30),减少过早换出对编译进程的影响。noatime 挂载选项减少文件访问时间更新,降低磁盘写放大。四 针对OpenJDK源码构建的专项优化
sudo yum groupinstall -y "Development Tools"
sudo yum install -y freetype-devel cups-devel libXtst-devel libXt-devel \
libXrender-devel libXrandr-devel libXi-devel alsa-lib-devel \
libffi-devel autoconf ant zip unzip zlib-devel bzip2-devel \
ncurses-devel readline-devel openssl-devel xz-devel lzma-devel \
sqlite-devel gdbm-devel tk-devel
make -j$(nproc)(或按 NUMA/超线程情况适度调整)。export PATH=/usr/lib64/ccache:$PATH。--with-debug-level=fastdebug(或 release)以平衡调试信息与编译时长。--with-target-bits=64。make clean 或使用独立输出目录,避免脏状态影响增量与缓存命中。五 快速检查清单与常用命令
nproc;构建时尽量使用 -j$(nproc) 或 -T 1C。free -m、swapon -s;必要时按上文增加 Swap。mount | grep noatime;I/O 密集场景优先 SSD。-T 1C,Gradle org.gradle.parallel=true、org.gradle.daemon=true。top/htop、iotop、vmstat 1 观察编译阶段的 CPU、I/O、内存与 swap 行为。