1. 安装与配置合适的JDK版本
在Debian上,优先通过官方源或OpenJDK PPA安装稳定版本的JDK(如OpenJDK 11及以上),避免使用过时版本。安装命令示例:
sudo apt update && sudo apt install openjdk-11-jdk
使用update-alternatives管理多版本JDK,设置默认版本:
sudo update-alternatives --config java
验证安装:java -version。
2. 精细化调整JVM内存参数
通过-Xms(初始堆大小)和-Xmx(最大堆大小)设置固定堆内存(如-Xms4g -Xmx4g),避免运行时动态调整带来的性能损耗;根据应用对象生命周期调整新生代(Young Generation)与老年代(Old Generation)比例(-XX:NewRatio=3,新生代占堆的1/4)及幸存区(Survivor Space)比例(-XX:SurvivorRatio=8,Eden区与幸存区比例为8:1:1);启用G1垃圾回收器(-XX:+UseG1GC)以平衡吞吐量与延迟,若对延迟极度敏感可选择ZGC(-XX:+UseZGC)。
3. 选择适配的垃圾回收器
根据应用特性选择垃圾回收器:
-XX:+UseG1GC);-XX:+UseZGC);-XX:+UseConcMarkSweepGC,JDK 14后移除)。4. 代码层性能优化
String str = new String("hello")),改用对象池或复用对象;HashMap(快速查找)、ArrayList(随机访问)等,避免使用LinkedList(随机访问性能差);StringBuilder(非线程安全,性能更高)替代String拼接(尤其在循环中),减少内存分配;java.util.concurrent包中的ThreadPoolExecutor(线程池)、ConcurrentHashMap(线程安全Map)等,避免手动同步导致的线程阻塞。5. 系统资源优化
vm.swappiness(默认60,建议设置为10以下)以减少交换空间使用,提升内存访问效率;优化I/O调度器(如使用deadline或noop调度器)减少磁盘延迟;apt clean清理APT缓存,删除无用软件包(sudo apt autoremove),释放磁盘空间;6. 监控与分析性能瓶颈
使用JVM内置工具(如jstat监控GC情况、jmap生成堆转储、jstack分析线程状态)或第三方工具(如VisualVM、JConsole、Eclipse MAT)实时监控应用性能;分析GC日志(添加-Xloggc:/path/to/gc.log参数)了解垃圾回收频率与耗时,针对性调整GC策略;通过性能分析工具定位热点代码(如CPU占用高的方法、内存泄漏的对象)。
7. 其他优化技巧
-Xss参数(如-Xss2m,默认1MB),减少内存占用(注意:过小可能导致栈溢出);-XX:+TieredCompilation启用JIT分层编译,提升应用启动速度与运行性能;