【问题标题】:Set Java VM maximum memory size [duplicate]设置Java VM最大内存大小[重复]
【发布时间】:2015-10-12 21:50:05
【问题描述】:

我有 1GB 内存的小型 Linux 服务器 (VPS) 我只想给 Java VM 256MB 是否有将 Java VM 限制为该内存大小的选项,所以当我超过该限制时,我开始捕获 OutOfMemory 异常

主要问题是,当内存超过负载时,我将返回重载错误,这是可以接受的响应,但问题 Java 一直在消耗系统内存,这些内存将被强制释放给其他程序!!

是的,我需要最小化内存,因为服务器不是专门用于 Java 的,并且为 Java 的 sack 超出内存不是一种选择。

如果没有这种方式的 Java 选项,我应该选择 C++ 来开发 Linux,复杂性、线程或内存管理不是问题,因为这个 Java 程序只是一个专用服务

【问题讨论】:

  • -Xmx256m 是选项。
  • 这是一个很大的秘密,但 Oracle 实际上确实提供了文档。 docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html 。当您搜索“java 内存配置”或其任何变体时,谷歌提供的数千个链接并不是什么秘密。
  • 另外,不要尝试捕获 OutOfMemory 异常(实际上是一个错误)。您不太可能从中恢复过来。
  • 其实我用的是小程序,Java上去,思路很简单,不要超过你那份内存,我无论如何也不能强求!尝试这个示例 java -Xms1M -Xmx1M -Xss1M -jar program.jar 理论上肯定会出错,但是没有 Java 的最小内存约为 64M,没关系,那我应该有 191MB,它会上升!!!

标签: java c++ memory


【解决方案1】:

您可以在使用-Xmx 参数启动Java 时控制它的堆大小。在您的情况下,这将是 -Xmx256m

【讨论】:

    【解决方案2】:

    您需要的选项是-Xmx256m

    阅读 JVM 的文档

    -Xmx [g|G|m|M|k|K] 此选项设置最大 Java 堆大小。 Java堆(“堆”)是内存的一部分,其中的块 内存分配给对象并在垃圾收集期间释放。 根据您运行的操作系统类型, 您可以为 Java 堆设置的最大值可能会有所不同。

    【讨论】:

    • 尝试这个命令会抛出 OutOfMemeroy 错误
      java -Xms1M -Xmx1M -Xss1M -jar program.jar
      no free -m 显示系统使用了超过 60 MB 的内存并释放在杀死 Java VM 之后!
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 2020-10-16
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2013-11-11
    • 2020-08-07
    相关资源
    最近更新 更多