MaxNewSize = 17592186044415 MB

14、jmap -heap看到的参数值与实际起作用的参数的关系?

发了几个例子在这里:https://gist.github.com/1363195
其中有个看起来很恐怖的值:

Java代码  收藏代码
MaxNewSize       = 17592186044415 MB 

这是啥来的?


C++代码  收藏代码
product(uintx, MaxNewSize, max_uintx,                                  \ 
        "Maximum new generation size (in bytes), max_uintx means set " \ 
        "ergonomically")    


在HotSpot VM里,intx是跟平台字长一样宽的带符号整型,uintx是其无符号版。
max_uintx是(uintx) -1,也就是说在32位平台上是无符号的0xFFFFFFFF,64位平台上则是0xFFFFFFFFFFFFFFFF。

jmap -heap显示的部分参数是以MB为单位来显示的,而MaxNewSize的单位是byte。我跑例子的平台是64位的,于是算一下 0xFFFFFFFFFFFFFFFF / 1024 / 1024 = 17592186044415 MB 。

参数的说明告诉我们,当MaxNewSize的值等于max_uintx时,意思就是交由ergonomics来自动选择young gen的最大大小。并不是说young gen的最大大小真的有0xFFFFFFFFFFFFFFFF这么大。

http://firefoxmmx.is-programmer.com/posts/32537.html

你可能感兴趣的:(size)