做菜与洗碗

今天晚饭,老婆连着用了4个锅来做了两菜一汤。好吃 :lol:
其中一道菜用了1个锅,另一道菜用了3个锅,汤用了2个锅。
还有中间工序放临时状态的食材用的大小碗碟若干。

嗯⋯嗯?但是总共只有4个锅诶。
于是做菜的过程中我也洗了几次碗。

突然想起了什么⋯
老婆做菜跟我洗碗的关系,就是mutator与collector的关系!

老婆作为mutator,做菜途中不断在切换工序的时候把中间状态的食材放到新的干净的锅/碗里。
锅/碗不够用的时候,老婆就调用了我,collector。

老婆跟我用粗粒度同步,大致是个stop-the-world collection。所以我洗碗的时候老婆就在一旁休息着。

我使用mark-compact算法,
(1) 找出所有要洗的锅碗瓢盆,
(2) 清洗它们,
(3) 想好要按什么顺序把它们放到架子上,
(4) 然后把它们放到架子上。

收集好之后,老婆恢复做菜流程,直到锅/碗再次用完⋯

今天状况有点特殊,老婆用锅用得特别快,我的洗碗速度有点跟不上。于是转入分代式收集模式:
更换速度快的锅/碗先洗,剩余的锅碗瓢盆先放一边。
终于又能跟上了~

你可能感兴趣的:(Garbage,Collection,GC)