Ubuntu 下 Java 编译资源的管理实践
一 基础环境与 JDK 管理
sudo apt install default-jdk 后执行 javac --version 与 java -version 校验。readlink -f "$(which java)" 可解析符号链接得到实际路径,如 /usr/lib/jvm/java-11-openjdk-amd64/bin/java。export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;将其加入 ~/.bashrc 或 /etc/profile.d/java.sh 以持久化。注意很多工具期望 JAVA_HOME 指向 JDK 根目录而非 bin/java。update-alternatives 注册并配置 java/javac 的多个版本,按需切换,避免“相依性地狱”。二 依赖与构建资源管理
mvn dependency:tree / gradle dependencies)识别重复与冲突依赖,合理使用 <exclusions>(Maven)或 exclude(Gradle)与依赖范围(compile、provided、runtime、test)进行裁剪。三 编译与运行期资源控制
-Xms512m -Xmx2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m;依据应用特性选择并行/CMS/G1/ZGC 等收集器。docker run -m 2g),避免容器 OOM;JVM 堆上限不应超过容器限额,必要时开启 -XX:+UseContainerSupport(JDK 8u191+)。-T 1C 并行构建;Gradle 默认并行与增量编译。结合 IDE 的增量编译与注解处理器缓存提升速度。src/main/resources;使用构建工具资源过滤与多环境配置(Maven profiles、Gradle sourceSets/flavors)管理不同部署环境的资源。四 本地缓存与仓库清理
mvn dependency:purge-local-repository 或在 CI 中使用“依赖缓存失效策略”,并在构建中集成 OWASP Dependency-Check 等安全审计工具,及时替换存在漏洞的依赖版本。五 监控与排障要点
-Xms/-Xmx;结合日志分析异常堆栈与对象分配热点,排查大对象、无限增长缓存、未关闭资源、集合泄漏等根因。