2013-1-24 8:58:20


 
2013-1-24 8:58:20


heap 描述了一段范围,长度,分配字节数,分配对象数,一个并行GC的阈值,一个mspace

addNewHeap

这个是向heapsource 中添加一个新的heap

当heap的数目超过2个或者buffer不足的时候失败

88struct mspace_contig_state {
89  unsigned int magic;
90  char *brk;
91  char *top;
92  mspace m;
93};
94

malloc_state 维护着全局的数据结构

在其同一个页的首地址处,有 mspace_contig_state

维护者brk top mspace magic 等

可以通过这个找到对应的brk值

将brk值按页上取整,作为第二个heap的base值

所有heap的值都是页对齐的

heap的最大值通过hs的增长限制来确定

新heap的并行GC的起始字节数是和所有heap分的最小空闲字节

这种方式一旦实现,前一个heap就不能再增长了,

最后需要把新加的heap放到激活位置上,剩下的来heap自然就退居幕后。


新的改动

添加了 最大最小空闲值 和目标使用率

需要加入参数解析和默认值

cardtable的问题

GcHeap

与GC有关,那么就有hs指针,各种引用链表,cardtable问题,debug值等

dalvik-card-table 这个在分配的时候多分配了256个字节

长度和最大长度

cardTableOffset 为什么要拼一个0x70的差值出来

hs启动和cardtable启动还是2码事情

你可能感兴趣的:(2013-1-24 8:58:20)