温馨提示×

Ubuntu Java运行慢怎么解决

小樊
43
2026-07-12 23:37:07
栏目: 编程语言

在 Ubuntu 上 Java 运行慢,通常不是单一原因,而是 JVM、系统配置、应用本身或资源限制 共同作用的结果。下面按常见原因 → 对应解决方案给你一个系统性的排查与优化清单。


一、先确认“慢”在哪里

先定位问题,而不是盲目优化:

top
htop

看:

  • CPU 是否长期 100%
  • 内存是否快满
  • 是否有 swap 在使用
java -version

确认 Java 版本(老版本性能差)


二、常见问题与解决方案

1️⃣ Java 版本太老(最常见)

现象

  • Java 8 以下
  • OpenJDK 性能差

解决

sudo apt update
sudo apt install openjdk-17-jdk

查看当前版本:

java -version

✅ 推荐:

  • OpenJDK 17 / 21(LTS)
  • 生产环境避免 Java 8(除非必须)

2️⃣ JVM 内存参数没设置(默认太小)

现象

  • 启动慢
  • 运行一段时间后变慢
  • 频繁 GC

解决 启动时指定内存:

java -Xms512m -Xmx2g -jar app.jar

建议:

  • -Xms-Xmx 设成一样,避免动态扩容
  • 不超过物理内存 70%

3️⃣ 使用了 Swap(非常慢)

现象

  • 内存没满但程序卡
  • IO 很高

检查

swapon -s

临时关闭

sudo swapoff -a

永久关闭

sudo nano /etc/fstab
# 注释 swap 行

4️⃣ 磁盘 IO 或文件系统问题

现象

  • 日志、数据库、jar 在机械盘
  • 大量日志写入

解决

  • jar / 数据放 SSD
  • 减少日志级别(logback / log4j)
<root level="WARN">

5️⃣ Ubuntu 系统资源限制

查看限制

ulimit -a

常见限制:

  • open files 太小

修改

sudo nano /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

6️⃣ 使用了错误的 JVM(Client VM)

检查

java -version

如果是:

Java HotSpot(TM) Client VM

说明是 32 位或老 JVM ❌

解决

  • 安装 64 位 Server VM
  • 使用 OpenJDK 64-bit

7️⃣ GC(垃圾回收)频繁

查看 GC

java -Xlog:gc* -jar app.jar

优化 GC

java -XX:+UseG1GC -jar app.jar

或(Java 17+):

java -XX:+UseZGC

8️⃣ 程序本身问题

排查

  • 死循环
  • 大量 synchronized
  • 频繁 new 对象
  • 数据库慢 SQL

工具

jstack pid
jmap -histo pid

三、快速优化清单(推荐直接做)

必做

  1. 升级 Java 到 17/21
  2. 设置 -Xms / -Xmx
  3. 关闭 swap
  4. 使用 G1/ZGC
  5. 减少日志输出

四、如果你愿意,我可以更精确帮你

你可以直接贴出:

  • Ubuntu 版本
  • Java 版本
  • 应用类型(Spring Boot / 普通 Java / 服务)
  • tophtop 截图
  • 启动命令

我可以 直接给你一套最优 JVM 参数配置

0