alibaba/fish-redux

RecycleContext是否有意义?

coocoa opened this issue · 0 comments

在我阅读项目源代码的时候,我注意到 RecycleContext.reuseOrCreate() 在每次调用时都会执行create逻辑,因为

final int length = _usedIndexMap[key] = (_usedIndexMap[key] ?? 0) + 1;

所以每次调用 RecycleContext.reuseOrCreate() 时,length 的值都会 +1。

据我推测,RecycleContext 应该是充当了缓存池的作用,调用N次 RecycleContext.reuseOrCreate() 会产生N个 ContextSys 实例。但是当我分析完整段 RecycleContext 的代码逻辑之后,我观察到仅当 RecycleContext.markAllUnused()RecycleContext.reuseOrCreate()RecycleContext.cleanUnused() 之间被调用时,RecycleContext.reuseOrCreate() 才会变得有意义。

在我阅读其他部分的时候,只有例如

RecycleContext.markAllUnused();
// ...
for(var foo in container) {
    // ...
    RecycleContext.reuseOrCreate();
    // ...
}
// ...
RecycleContext.cleanUnused()

也就是说,调用 RecycleContext.reuseOrCreate() 永远都会执行create逻辑,而不会reuse。那么 RecycleContext 存在的意义是什么?