账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    okhttp的字节缓存策略segment的问题
    45
    0

    看okhttp源码看到segment时,根据methods的注释,有了以下理解,比如我segment的双向链表有3个实例:
    Segment1[30]:表示实例1,字节数组内存占用百分30。

     * Segment1[30] <- Segment2[60]<- Segment3[10]
     *                  拆分Segment2
     * Segment1[30] <- Segment2[20]<- Segment2~[40]<- Segment3[10]
     *
     * 那么1,2可以compact,2,2~不能compact,2~,3不能compact吗?

    我看源码在split Segment2的时候,将Segment2置为shared状态,然后将Segment2~置为owner=false的状态,意思是不可写。
    在compact函数里,会判断 prev.shared && !prev.owner条件,满足这两个条件的相邻的Segment才可以compact成一个(这问题里容量判断的大前提默认都满足)。
    那么按照它的意思,1,2可以compact,2,2~不能compact,2~,3不能compact吗?这么设计是为了避免什么问题?
    小弟没理解其中意义。请各位指教。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部