内存分配策略之复制算法

复制算法:将内存分为大小相等的两块,例如:A区  B区,程序运行时所需要的内存存放在A区,当A区内存空间不足以存放接下来对象所需分配的内存时,将进行GC操作(将A区存货的对象复制到B区,接下来清理A区所有对象)

如图(图片来自网络):

 

优点:

  1. 提高效率
  2. 减少内存碎片

缺点:

  1. 所需内存扩大1倍

 优化:

通常情况下新生代中对象的存活率大概是2%(IMB公司提供数据),所以实际使用中并不需要使用1:1的内存分配方式,而是将新生代分为一个Eden space和from space、to space(from space和to space等大),也就是通常说的Eden区和Survivor区

在hotspot虚拟机中默认的Eden区和Survivor区的比例是8:1,所以实际新生代可用的内存空间是90%,当内存不足时执行GC操作,将Eden区和其中一个Survivor区的存活对象复制到另一个Survivor区(内存空间是年轻代的10%),清楚Eden区和一个Survivor区

如果Survivor区不足以存放存活的对象,则会直接分配到老年代中

posted @ 2019-03-15 15:48  一天学点  阅读(430)  评论(0编辑  收藏  举报