在開始優化前,需確保系統具備編譯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)驗證優化效果。