温馨提示×

ubuntu运行java慢怎么破

小樊
36
2026-09-04 01:35:21
栏目: 编程语言

在 Ubuntu 上运行 Java 慢,原因可能很多,下面按常见原因 + 对应解决办法给你一套排查思路,基本能覆盖 90% 的情况。


一、先看是不是 JVM 启动慢(最常见)

1️⃣ 关闭熵池阻塞(非常重要)

Java 随机数 /dev/random 在服务器上很容易卡死。

java -Djava.security.egd=file:/dev/./urandom -jar xxx.jar

✅ 或永久修改:

sudo vim $JAVA_HOME/jre/lib/security/java.security

改为:

securerandom.source=file:/dev/urandom

二、JVM 参数没调(默认很保守)

2️⃣ 设置合理堆内存

Ubuntu 默认 JVM 堆很小。

java -Xms512m -Xmx2g -jar app.jar

服务器建议:

-Xms = -Xmx

三、用的是 OpenJDK 还是 Oracle JDK?

3️⃣ 换 JDK 版本/实现

  • OpenJDK 默认 Client 模式(慢)
  • 服务器一定要 Server 模式
java -version

如果是:

OpenJDK Client VM

❌ 太慢

✅ 解决:

sudo apt install openjdk-17-jdk

确认:

java -server -version

四、磁盘 / IO 问题

4️⃣ 是否在机械盘 / 低性能云盘?

  • 日志疯狂写
  • jar 在 NFS / 挂载盘

✅ 建议:

mv app.jar /tmp/ 测试一次

五、系统资源被吃光

5️⃣ 查 CPU / 内存

top
htop
free -h

常见坑:

  • swap 被用
  • 内存太小触发 GC

✅ 关闭 swap(服务器):

sudo swapoff -a

六、GC 太频繁(隐性慢)

6️⃣ 看 GC 日志

java -Xlog:gc* -jar app.jar

如果看到:

  • Full GC 很多
  • GC 占用时间高

✅ 换 GC:

java -XX:+UseG1GC -jar app.jar

七、Docker / WSL 特别慢?

7️⃣ 限制 CPU 导致 Java 误判

Docker 里要加:

-e JAVA_OPTS="-XX:ActiveProcessorCount=4"

WSL:

wsl --shutdown

再试


八、快速自检清单 ✅

你可以直接回我:

  1. Ubuntu 版本
  2. Java 版本(java -version
  3. 是 jar / tomcat / spring boot?
  4. 云服务器还是本地?

我可以直接给你一套最优启动参数

0