在一款使用python+clutter的播放器中,使用一个自定义使用c语言的clutter的控件,来显示一部影片的简介,简介中最多时,大概会显示一百多张图片.
现在有一个问题就是,这个控件有内存泄露的问题.
首先是,这个控件本身会内存泄露,开始时大概创建和销毁一次此控件,虚拟内存会增加5m左右,后来,经过排查,主要是一些字符串资源没有释放的问题.
经过修改,现在降到了200-300k左右.基本可以接受.
在本机的测试中,使用二种方式来测试,一种是在c语言工程中来测试这个控件,另一种是在一个python工程来测试这个控件,两种测试結果表示,每次创建和销毁大概只会消耗200-300k,两者結果比较一致.
但是,在目标机上实际运行却发现,一旦加载此控件,然后显示多张图片,内存资源上升到最高值,但是,销毁此控件时,内存消耗却再也不会下降,而且再次创建此控件,内存也只会在这个最高值附近,也不会再继续增加.
初步怀疑是由于python的内存池机制问题.

在使用Python+Clutter开发的播放器中,一个自定义的C语言Clutter控件存在内存泄漏问题。该控件用于展示电影简介,包含大量图片。在目标设备上运行时发现,虽然控件创建与销毁的直接内存消耗可控,但加载并显示图片后,内存占用持续高位,未见明显回收迹象。疑似与Python内存管理机制有关。

被折叠的 条评论
为什么被折叠?



