如何释放(未使用的)内存?

如何释放(未使用的)内存?

作为使用 amazon ec2 的新手,我正在尝试使我的应用程序正常工作。我通过 ssh 连接了几次,我一直在运行和停止服务器,有时连接会丢失,还有一些其他事情...

有一次,我收到 JVM 的错误(我的应用程序使用 Scala),提示没有足够的可用内存,无法分配给自己运行。我所做的就是重启服务器。这有效。但我认为应该有更有效的方法。有吗?

更新

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5550000, 715849728, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 715849728 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ubuntu/my-app/hs_err_pid8668.log

答案1

我会关注两个变化:

  • 我非常确定您需要调整 JVM 的内存使用情况(首先使用-Xmx)以匹配您所使用的机器。确保您要求的内存不超过 VM 所拥有的内存。
  • 破坏你的过度使用设置。 Re:invent 2013 上的演讲建议overcommit_memory=2overcommit_ratio=80。陷入过度承诺的糟糕境地将导致 malloc 失败,就像您看到的那样。

相关内容