在开始优化前,需确保系统具备编译Java及依赖库的基础环境。
yum安装gcc、make、git等基础工具,以及Java开发所需的库(如freetype-devel、libstdc++-static)。yum groupinstall "Development Tools" -y
yum install -y git gcc gcc-c++ make freetype-devel libstdc++-static ant zip unzip zlib-devel
/opt目录,通过环境变量管理多版本。wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
tar -xzvf openjdk-11.0.2_linux-x64_bin.tar.gz -C /opt/
echo "export JAVA_11_HOME=/opt/jdk-11.0.2" >> ~/.bashrc
echo "export PATH=\$JAVA_11_HOME/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
yum install ccache -y
export PATH="/usr/lib64/ccache:\$PATH"
x86_64)设置优化标志,通过/proc/cpuinfo查看CPU型号,参考Gentoo Safe Cflags获取适配参数(如-march=native自动匹配CPU特性)。export CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="\$CFLAGS"
make -j$(nproc)命令(nproc返回CPU核心数),例如4核CPU可使用make -j4。StringBuilder代替+操作符,尤其在循环中,可显著降低内存分配次数。list.size()、array.length等方法,将其移至循环外。try-with-resources语法),防止内存持续占用。-Xms)和最大堆(-Xmx),避免频繁扩容(如-Xms16g -Xmx16g)。java -Xms16g -Xmx16g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar your-app.jar
java -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -jar your-app.jar
/etc/sysctl.conf文件,降低vm.swappiness(减少swap使用,提升内存访问速度),例如设置为10:echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
postfix邮件服务、firewalld防火墙,若无需远程访问),释放系统资源。systemctl stop postfix
systemctl disable postfix
systemctl stop firewalld
systemctl disable firewalld
# 编译为本地镜像
native-image -cp your-app.jar -H:Name=myapp -H:Path=./output
<exclusions>标签),减少编译时间和最终包大小。通过以上步骤,可从环境配置、编译过程、代码质量、JVM运行时及系统底层多维度优化CentOS上的Java编译,提升编译效率与应用性能。需根据实际应用场景(如启动时间、吞吐量、延迟)调整参数,通过性能监控工具(如VisualVM、JProfiler)验证优化效果。