共享池堆(chunk)
共享池内存,最上面一层是Heap(堆),在一个堆中,内存被划分为多个大小相关的区,区中包含着大小不相等的若干chunk,其实共享池最基本的分配单元,大小不统一。
--共享池大小,$x$ksmsp,记录共享池chunk情况
select count(*),
round(sum(ksmchsiz)/1024/1024,0) total_size_mb,
round(avg(ksmchsiz),0) avg_size_b
from x$ksmsp;
--对比参数大小
show parameter shared_pool_size
--查看chunk类型
select ksmchcls,
count(*),
round(sum(ksmchsiz)/1024/1024,0) total_size_mb,
round(avg(ksmchsiz),0) avg_size_b
from x$ksmsp
group by ksmchcls order by ksmchcls;
chunk类型8种,R开头分别是保留池的类型。
- free : 可直接被覆盖
- perm : 永久类型,这种chunk不会被释放,如x$视图占用的都是此块内存
- recr: 即Recreatable,可重建chunk。
- freeabl: freeable,可释放的
参考《Oracle内核技术解密》