jvm堆设置模式

时间:2012-07-13 07:00:10

标签: java memory jvm

各位大家好,                    我已经观察到设置堆大小时人们更喜欢值64,128,256,1024 ..如果我在这些数字之间给出一个值(比如说500),jvm会不会接受这个值?为什么这些数字很重要?为什么我们也以这种模式升级RAM。

请帮助我理解。

提前致谢, 哈滨

5 个答案:

答案 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的幂时,它会更好地工作。