时间:2015-01-27 19:06 来源: 我爱IT技术网 作者:小搜
这两天在项目里实现了一个播放无声AVI动画的功能,是用delphi7自带的TMediaPlayer实现的,程序运行起来发现有内存泄漏问题(TMediaplayer都是岁用隋释放的),具体表现是每笔交易内存都会涨一点点。
当交易达到三千多笔后,内存泄漏就表现的很明显了,内存(物理内存和虚拟内存)变成了刚开始运行时的一倍。经过排查分析,发现是TMediaplayer的问题。为此我还专门写了一段小程序来验证我的观点。
经过分析TMediaplayer实际上是调用的winmm.dll这个动态库实现的多媒体播放功能,仔细看过TMediaplayer的代码,虽然写的挺烂的,但好像没有什么对象创建了却不释放的问题,个人认为问题应该出在windows系统底层动态库。
我用的xp是打过sp3补丁的,winmm.dll版本号是5.1.2600.5512,不是winmm.dll有内存泄漏就是它调用的别的动态库有内存泄漏。
既然这个办法不灵,我换成了基于activex的 windows media player,没想到一样也存在内存泄漏问题,而且问题更严重,估计wmp和winmm.dll一样用到了相同的动态库吧。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
