【问题标题】:Java Memory Limit -Xmx suffix: upper vs lower case m/M and g/G [duplicate]Java内存限制-Xmx后缀:大写与小写m / M和g / G [重复]
【发布时间】:2014-07-05 04:36:19
【问题描述】:

众所周知,可以使用-Xmx<amount><unit>来限制Java堆大小,其中unit是数据量单位,如Gigabyte、Megabyte等。 我知道-Xmx128M 表示 128 MB(= 128 * 1024 * 1024 字节)。

但是,使用-Xmx100m 也可以使用十进制单位,例如兆字节 (这将是 100 * 1000 * 1000 字节)?

那么是否可以通过使用小写单位后缀(如k, m, g 而不是K, M, G)来使用这种十进制单位?

【问题讨论】:

  • 顺便说一句,情况通常很重要,只是 javac 不在乎。注意:没有必要怀疑 g/G 是指 100^3 还是 1024^3,因为它也不完全是。 ;) 在我的系统上运行System.out.println(Runtime.getRuntime().maxMemory());-Xmx1g 打印954728448
  • @PeterLawrey 这很有趣。

标签: java memory jvm heap-memory jvm-arguments


【解决方案1】:

您为什么不试试-Xmx100m-Xmx100M 并检查是否有任何区别。
k, m, g 的工作方式与K, M, G 完全一样——它们都是二进制单位。

【讨论】:

  • 好的。感谢您的回答
【解决方案2】:

k 和 K 都表示 kibibyte 和 m/M = mebibyte & g/G = gibibyte 之间没有区别。您可以将100m 设置为值,它将是100 * 1024 * 1024 bytes。一般建议在powers of 2.中使用这个值

希望对你有帮助。

【讨论】:

  • 为什么建议使用二次方?我会质疑这一点。如果你想将 1g 添加到 8g 服务器,那应该没有问题。
【解决方案3】:

JVM 命令行参数使用的所有内存大小都以二进制单位(Kibibyte、Mebibyte 等)指定,无论单位大小写如何;其中一个“千字节”是 1024 字节,其他是 1024 的递增幂。

This answer 对该问题进行了更完整的技术回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多