其实很容易理解,新生代用的是复制算法,而常规复制算法是将内存区域划为两块等大的内存块,一次只使用一块,满了就把存活的复制到另一块,但这样一次只能用内存的1/2是不是太奢侈了?而且新生代对象绝大多数在gc时都存活不了的,根本不需要一半内存来保存,只需要一小块就好了,如果将内存分为一大块和一小块,你自己想想会出现什么问题?第一次gc把所有存活对象都复制到小块中,那接下来就只能使用小块内存。 因此需要两块小内存区域来保存存活对象,一次只使用其中一块。
1 1
牛客网
牛客企业服务