方法缓存
- 方法是存放在一个二维数组中的,调用方法就是进行遍历查找再执行,但是一个方法多次被调用显然这样速度很慢
- buckets 散列表 可以类比成一个字典,我们通过方法的SEL作为key倒找方法的地址Value
散列表简介
- 1.散列表的底层是一个数组 下标 0、1、2、3...
散列表执行步骤
- 1. 举例 调用了一个 SEL = studentTest的方法
- 2. 调用了一个 F函数算法=index 假设==32
- 3. 假设一开始设计的散列表的大小 mask = 16 数组的下标为0-15
- 4. 32&15 = 10 33&15 = 11 可以想象这里的与&运算相当于取余预算结果都一定比15小
0011 0010
&0001 0101
----------
0001 0000
- 5. 找到这个下标对比一下sel是否一致,一致就返回,不一致就查找下一个
- 6. 下一个就是 下标-1,假如还是不一样就继续-1,到0后就为mask值,继续查找
-
当存入的方法过多缓存变大散列表扩容 *2倍
-
清空后重新创建了一个散列表
-
当计算的下标相同,sel不同时调用这个方法将计算的下标 -1