Dart内存GC方法
Dart和Java的垃圾回收机制一样,都是分成了新生代和老生代,新创建的对象都会先分配在新生代中。
然而Dart和Java的新生代内存分配方式不一样,Dart只分了from和to 1:1的两部分,而Java则是分成了Eden、FromSpace、ToSpace 8:1:1三部分。
Dart中当from和to其中的一个内存占满则会通过gc将幸存的对象转移到另一个区域内,并将前一个区域清空,当经历了一定次数的gc仍然存活的,会被分配到老生代中。 老年代采用标记整理的方法来回收对象。
Java中则是新生的都在From、To其中一个和Eden中,当内存占满则会通过gc将幸存的对象转移到From、To的另一个区域,当经历了一定次数的gc仍然存活的,也会被分配到老生代中。老年代采用过标记清除(会有碎片)、复制(将内存分为两部分、利用率低)、标记整理(先标记,回收不要的,再移动到一端)算法。
More info: CSDN