Java内存限制-Xmx后缀:大写与小写的m/m和g/g

Java内存限制-Xmx后缀:大写与小写的m/m和g/g,java,memory,jvm,heap,jvm-arguments,Java,Memory,Jvm,Heap,Jvm Arguments,众所周知,可以使用-Xmx限制Java堆的大小,其中unit是数据量单位,如千兆字节、兆字节等。 我知道-Xmx128M表示128兆字节(=128*1024*1024字节) 但是,使用-Xmx100m (哪个是100*1000*1000字节) 那么,是否可以使用小写单位后缀(如k,m,g)而不是k,m,g)来使用十进制单位呢?为什么不试试-Xmx100m和-Xmx100m,看看有没有区别。 k,m,g的工作原理与k,m,g完全相同-它们都表示二进制单位。k和k之间没有区别,都表示kibibyte

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

但是,使用
-Xmx100m
(哪个是100*1000*1000字节)


那么,是否可以使用小写单位后缀(如
k,m,g
)而不是
k,m,g
)来使用十进制单位呢?

为什么不试试
-Xmx100m
-Xmx100m
,看看有没有区别。

k,m,g
的工作原理与
k,m,g
完全相同-它们都表示二进制单位。

k和k之间没有区别,都表示
kibibyte
,m/m=
mebibyte
&g/g=
gibibyte
。您可以将
100m
设置为值,它将是
100*1024*1024字节
。通常,建议在2的幂中使用该值。


希望有帮助。

JVM命令行参数使用的所有内存大小都是以二进制单位(Kibibyte、Mebibyte等)指定的,而不考虑单位大小;其中一个“千字节”是1024字节,其他的是增加1024的幂


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

Ok。谢谢你的回答。顺便说一句,这个案子很重要,只是javac不在乎。注意:没有必要怀疑g/g是100^3还是1024^3,因为它也不完全相同在我的系统上运行
system.out.println(Runtime.getRuntime().maxMemory())
-Xmx1g
一起打印
954728448
@PeterLawrey,这很有趣。为什么建议使用二次幂?我对此表示怀疑。如果您想将1g添加到8g服务器,这应该没有问题。