【问题标题】:Memory issue during JAR executionJAR 执行期间的内存问题
【发布时间】:2016-07-20 07:20:03
【问题描述】:

我有大约 8 个 API 的 JAR 和 4 个来自 spring cloud(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 个 jars):-

free -m

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

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

我们将不胜感激。

【问题讨论】:

  • 您可以尝试进行飞行记录,java -XX:StartFlightRecording=settings=profile,filename=recording.jfr,dumponexit=true (JDK8u40) 并在 Java Mission Control 中打开. JFR 在 OOM 上可能会遇到问题,但很多时候它会成功。查看 Object Statistics 以了解填充堆的对象类型,或者 Allocation Statistics(如果有非常大的对象)或有关本机内存、垃圾收集等的信息可能会提供线索,

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


【解决方案1】:

我在执行作业中添加了 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

【讨论】:

    【解决方案2】:

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

    您几乎没有使用缓冲区/缓存,这向我表明有时您的可用内存小于此大小。 (只是在你拿这个样本时不是)

    这台机器有多少空闲交换空间?

    【讨论】:

    • 我不是服务器人所以我如何检查交换空间...我只是修改了执行命令以在服务器中测试--> java -Xmx64m -Xss256k -jar jarname.jar 让我们看看这是怎么回事。
    • @Grinish 问题是系统有多少可用内存。如果没有太多可用内存(即使是暂时的),小程序可能会失败
    • 我同意..问题基本上是它不应该使用那么多但它仍然使用大量内存......基于这篇文章spring.io/blog/2015/12/10/spring-boot-memory-performance我应该有很多空间留在我的机器里...
    • @Grinish 如果你有大约 20% 的可用内存并且没有交换,我会在大多数情况下同意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2017-11-18
    相关资源
    最近更新 更多