JAR 执行期间的内存问题

Memory issue during JAR execution

我有大约 8 个 API 的 JAR 和 spring 云中的 4 个(Zuul、Hystrix、Config-Server、Eureka)。我现在 运行 一台服务器中的所有 jar,但我们稍后会在生产时进行扩展。

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

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000000078fb80000, 293601280, 0) failed; error='Cannot allocate memory' (errno=12)

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

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

free -m

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

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

我们将不胜感激。

这通常发生在 JVM 尝试使用更多内存且可用且 OS 在程序启动后拒绝时。我会尝试减少堆大小,为系统提供更多可用内存。

您几乎没有 buffer/cache 使用过,这让我觉得您的可用内存有时会小于这个大小。 (只是不是当你拿这个样本的时候)

这台机器有多少免费掉期space?

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

java -Xmx64m -Xss256k -jar abc.jar

在此之后,即使我在同一台服务器上部署了 13 个 jar,我还剩下 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