会计培训班需要学多长时间,做360网站优化排,深圳网站开发建设培训机构,南京市公共工程建设 中心网站为了解决效率问题#xff0c;一种称为“复制”#xff08;Copying#xff09;的收集算法出现了#xff0c;他将可用内存按容量划分为大小相等的两块#xff0c;每次只使用其中一块。当这一块的内存用完了#xff0c;就将还存活着的对象复制到另外一块上面#xff0c;然后… 为了解决效率问题一种称为“复制”Copying的收集算法出现了他将可用内存按容量划分为大小相等的两块每次只使用其中一块。当这一块的内存用完了就将还存活着的对象复制到另外一块上面然后再把已使用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收内存分配时也就不用考虑内存碎片等复杂情况只要移动堆顶指针按顺序分配内存即可实现简单运行高效。只是这种算法的代价是将内存缩小为了原来的一半未免太高了一点。复制算法的执行过程如下图所示。 现在的商业虚拟机都采用这种收集算法来回收新生代IBM公司的专门研究表明新生代中的对象98%是“朝生夕死”的所以并不需要按照1:1的比例来划分内存空间而是将内存分为一块较大的Eden空间和两块较小的Survivor空间每次使用Eden和其中一块Survivor。当回收时将Eden和Survivor中还存活着的对象一次性的复制到另外一块Survivor。当回收时将Eden和Survivor中还存活着的对象一次性的复制到另外一块Survivor空间上最后清理掉Eden和刚才用过的Survivor空间。HotSpot虚拟机默认Eden和Survivor的大小比例是8:1也就是每次新生代中可用内存为整个新生代容量的90%80%10%只有10%的内存会被“浪费”。当然98%的对象可回收只是一般场景下的数据我们没有办法保证每次回收都只有不多于10%的对象存活当Survivor空间不够用时需要依赖其他内存这里指老年代进行分配担保Handle Promotion。 内存的分配担保就好比我们去银行借款如果我们信誉很好在98%的情况下都能按时偿还于是银行可能会默认我们下一次也能按时按量的偿还贷款只需要有一个担保人能保证如果我不能还款时可以从他的账户扣钱那银行就认为没有风险了。内存的分配担保也一样如果另外一块Survivor空间没有足够空间存放上一次新生代收集下来的存活对象时这些对象将直接同故宫分配担保机制进入老年代。 这里需要说明一下在HotSpot中的这种分代方式从最初就是这种布局与IBM的研究并没有什么实际联系。列举IBM的研究只是为了说明这种分代布局的意义所在。