对象池的缺点及几种优化方法

本文探讨了对象池在使用中可能导致的内存问题,如过度消耗和闲置对象。提出了定期清理过期对象和设置最大数量限制的优化方案,以及应对清理频率过高问题的方法。
摘要由CSDN通过智能技术生成

对象池存在的问题

对象池在使用的时候,如果不加以控制,那么会增加内存消耗
比如仅在某个时间段突然需要大量对象,其他时间只用少量对象
此时对象池不够,需要添加更多的对象。而当增加完对象后,大量对象长时间存在内存里没有被使用,就导致了内存消耗。

以下是几种优化方案

1.定期清理掉长时间没使用过的对象。

可以使用1个字典存放每个对象的使用时间,一旦超过了最大使用时间则触发清除

2.设置一个对象池最大数量,每次释放对象时检查对象池数量。

如果对象池内的数量超过了最大值,则触发清除对象,直到数量为最大值。
但是这种方法又会导致新的问题:清理过后,下次再释放1个对象,又会超过最大值,频繁触发清理操作
解决办法:新增1个变量remainCountClear用于确认清理后还剩下多少个对象,当超过最大值maxSize时,list.Count - remainCountClear 为要清除多少个对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值