最近解决的一个内存泄漏问题

       最近解决了一个内存泄漏的问题,问题的起因是在测试过程中施加了极大的压力,以至于CPU的利用率一直维持在100%。此时出现了大量的内存泄漏。

       当时从代码中没有找到原因,后来通过其他方面的努力,找到原因如下:当时使用的机制是Windows Post Message。在某个线程中new一块Buffer,通过PostMessage传递到另外一个线程中delete.100CPU的状态下,这部分事件没有足够的时间片处理,导致事件堆积越来越多,以至于windows丢弃事件,从来buffer没有delete,最终内存泄漏。

       Windowevent queue的长度设置如下:

       Windows 2000: There is a limit of 10,000 posted messages per message queue. This limit should be sufficiently large. If your application exceeds the limit, it should be redesigned to avoid consuming so many system resources. To adjust this limit, modify the following registry key:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/Windows/USERPostMessageLimit.

The minimum acceptable value is 4000.

       虽然可以通过这个办法增加queue的长度缓解问题,但是没有办法最终解决问题。所以这种做法是不合理的。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值