Bucket(free list) 是如何来划分内存chunk大小范围的?

Oracle 10.2.0.4   

在Shared pool中,可用的chunk (free类型) 会被串起来称为可用链表 (free list) .  空闲内存都是由空闲列表(free list)统一管理、分配的。
每个空闲的chunk都会属于也只属于一个空闲列表。 空闲列表上的chunk的大小范围是由bucket来划分的。我们也可以把bucket视为一种索引,
使Oracle在查找空闲块时,先定位所需的空闲块在哪个bucket的范围内,然后在相应的空闲列表中查找。

当某进程需要shared pool中的一个bucket时,则该进程首先到符合请求的空间大小的bucket上扫描,找到尺寸最合适的chunk , 扫描持续到
这个bucket 的最末端  .......   


问题:  如下, bucket 0  size = 44  表示bucket 0 中44 Bytes 的free chunk size , 下面包含的3个chunk sz分别
是56  (free), 60  (free) , 28  (free)  分别代表什么, 是各个chunk的总大小 , 后面free代表啥意思 ?   44 Bytes
是指下面这三个chunk 总共剩下的free 空间 ?  Oracle是如何根据 bucket size 和 各chunk size 大小进行串联chunk的 ?



使用一下语句dump sga 信息:

alter session set events 'immediate trace name heapdump level 2' ;



bucket 0 size=44
  chunk  7bb0dbc sz=       56    free      "               "
  chunk  7be52d4 sz=       60    free      "               "
  chunk  7be30b8 sz=       28    free      "               "
bucket 1 size=76
bucket 2 size=96
  chunk  7b695a4 sz=      116    free      "               "

bucket 3 size=140
bucket 4 size=236
bucket 5 size=268
bucket 6 size=524
bucket 7 size=1036
bucket 8 size=2060
bucket 9 size=4108
bucket 10 size=8204
bucket 11 size=16396
bucket 12 size=32780
bucket 13 size=65548
bucket 14 size=131084
bucket 15 size=262156
bucket 16 size=524300
bucket 17 size=2097164
total free space   =      260

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-676672/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-676672/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值