JAR执行期间的内存问题

时间:2016-03-31 17:41:38

标签: java spring-boot out-of-memory spring-cloud jvm-hotspot

我有大约8个API的JAR和4个来自spring cloud(Zuul,Hystrix,Config-Server,Eureka)。我现在正在一台服务器上运行所有的罐子,虽然我们将在以后进行生产时扩大规模。

AWS Linux服务器具有16GB内存。我遇到的问题是由于某种原因服务器不断耗尽内存,当我尝试执行Jar时,我得到以下错误。

free -m

             total        used        free      shared  buff/cache   available
Mem:          15630       13684        1835          17         110        1781

错误并非特定于特定jar,它是随机的。

来自服务器的内存(目前我已经部署了9个jars): -

.csproj

有没有人遇到过类似的问题。如果需要任何其他信息,可以提供更多信息。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

这通常发生在JVM尝试使用更多内存且可用且操作系统在程序启动后拒绝时。我会尝试减少堆大小,以给系统更多的空闲内存。

你几乎没有使用过任何缓冲区/缓存,这些信息告诉我你的可用内存有时会小于这个大小。 (只是当你拿这个样本时)

这台机器有多少可用的交换空间?

答案 1 :(得分:1)

我将java参数添加到执行作业中,似乎解决了这个问题。

java -Xmx64m -Xss256k -jar abc.jar

在此之后,即使我在同一台服务器上部署了13个jars,我还剩下10GB的内存,在添加参数之前是1.7GB。

内存在JAVA参数之前:

free -m

              total        used        free      shared  buff/cache   available

Mem:          15630       13684        1835          17         110        1781

Java争论之后的内存:

free -m

              total        used        free      shared  buff/cache   available

Mem:          15630        4927        8769          25        1932       10373