各位大家好, 我已经观察到设置堆大小时人们更喜欢值64,128,256,1024 ..如果我在这些数字之间给出一个值(比如说500),jvm会不会接受这个值?为什么这些数字很重要?为什么我们也以这种模式升级RAM。
请帮助我理解。
提前致谢, 哈滨
答案 0 :(得分:5)
JVM将接受任何值,没有问题。使用2 ^ n值只是一个“约定”,使用其他值将在实践中没有负面影响。
答案 1 :(得分:2)
好吧,如果你这样考虑一下:
1个字节是8位
1 kb = 1024字节
1 mb = 1024 kb
1 gb = 1024 mb
......等等......
这不仅仅是2^n
。计算中的内存方面与数字8密切相关 - 在大多数现代计算机中定义一个字节的数字。
将位组合在一起的主要原因是表示字符。由于所有事物计算的二元性质,比特的理想“团块”的幂为2,即1, 2, 4, 8, 16, 32...
。 (主要是因为它们总是可以分成较小的相等的包(它也创建了存储大小的快捷方式,但这是另一个故事))。显然4位(在某些圆圈中是nybble)可以给我们2 ^ 4或16个独特的字符。由于大多数字母大于此,因此2 ^ 8(或256个字符)是更合适的选择。
存在使用其他长度字节(特别是7或9)的机器。这并没有真正存活,主要是因为它们不容易操纵。您当然不能将奇数分成两半,这意味着如果要划分字节,则必须跟踪位串的长度。
最后,8也是一个方便的数字,许多人(心理学家等)声称人类大脑通常可以立即回忆起7-8件事情(没有玩记忆技巧)。
答案 2 :(得分:0)
如果它不接受该值,请检查您是否设置了megabytes
( M 或 m )或gigabytes
( G 或 g )修饰符。
示例:java -Xms500M -Xmx500M -jar myJavaProgram.jar
另外,请看一下这个link。
答案 3 :(得分:0)
为什么我们也以这种模式升级RAM。
这是因为内存芯片/卡/的大小是2字节的大小。其根本原因在于它使电子设备更简单。更简单意味着更便宜,更可靠,(可能)更快。
答案 4 :(得分:0)
除了非书面约定外,它还会对性能产生影响 - 具体取决于机器的体系结构。
例如,如果一台机器是基于三元的,那么当堆大小设置为3的幂时,它会更好地工作。