验证OOM异常的时候遇到了这样一个问题!
我开始的想法就是new一个很大很大的数组,他就一定会报OOM异常,于是就不假思索的new了一个 超级大的数组,完全没有考虑到整型的溢出!于是还傻乎乎的去问老师!
最后我输出了一个那个值,是0,没错就是0。就等同于 new byte[0],所以肯定不会报OOM异常,阿~~~~找了1个小时的问题啊!
于是我重新new了一个大小不溢出的数组:整型最大值,2的31次方-1
终于报OOM异常了,验证了以上结论:
new 一个大小超过老年代可用内存的数组,报OOM异常!
原因:
new的数组起初在分配伊甸园区,伊甸园区放不下,去老年代分配,老年代发现他也放不下,于是报了OOM异常
补习了下计组的知识:
为什么整型最小值的绝对值要比最大值的绝对值要大1?
完美验证!