在 Debian 系统下 Java 编译慢,通常不是“Java 本身慢”,而是编译参数、构建工具、系统资源、或环境问题导致的。下面按最常见原因 → 对应优化方案来说明,适用于典型场景(Maven / Gradle / 直接 javac)。
| 现象 | 可能原因 |
|---|---|
mvn compile 很慢 |
Maven 依赖下载、插件执行 |
gradle build 很慢 |
Gradle 守护进程、任务依赖 |
javac *.java 慢 |
JVM 启动、内存、CPU |
| 首次编译慢,后续快 | 正常(JIT / 缓存) |
| 每次都慢 | 需要优化 |
默认 JVM 参数不一定适合编译场景。
export JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseG1GC"
或针对 Maven:
export MAVEN_OPTS="-Xms512m -Xmx2g"
Gradle:
export GRADLE_OPTS="-Xms512m -Xmx2g"
建议:
- 小项目:512m–1g
- 中大型项目:2g–4g
老 JDK(8 / 11)在编译大项目时明显更慢。
java -version
推荐:
升级方式(Debian):
sudo apt install openjdk-17-jdk
mvn compile -T 4
或:
mvn compile -T 1C
-T 1C:每个 CPU 核心一个线程(推荐)
mvn compile -DskipTests
或:
mvn compile -Dmaven.test.skip=true
编辑 ~/.m2/settings.xml:
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
否则 依赖下载会非常慢。
mvn compile -Dmaven.compiler.useIncrementalCompilation=true
或使用:
mvn compile -o # offline 模式(依赖已下载)
gradle --status
没开就加:
# gradle.properties
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2g -XX:+UseG1GC
top
htop
iostat -x 1
常见问题:
Java 编译是 大量小文件读写
HDD → SSD 可提升 2–5 倍
ulimit -n
建议:
ulimit -n 65535
或写入:
/etc/security/limits.conf
如果你是直接:
javac *.java
减少编译范围
javac -d out src/main/java/com/xxx/*.java
使用增量编译
避免重复 classpath 扫描
export MAVEN_OPTS="-Xms1g -Xmx2g"
mvn compile -T 1C -DskipTests
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx2g
你可以直接贴出:
cat /etc/os-release)我可以给你针对性的参数调优方案。