开发环境:Win7 x86 ,VS2010,Qt5.5
问题描述:我用QListWidget做缩略图显示,当图片很多时,缩略图只能显示50个左右,并且其它非缩略图的图片也无法显示。
分析过程:怀疑图片缓冲区太小,调大缓冲区后故障现象没任何改变。
编译Qt,跟踪调试,发现 malloc 失败导致图片不能显示。
查看内存,进程占用内存居然达到1.7G,问题的原因已十分明显了。
一个1M左右的图片,加载后内存占用了30M左右,图片加载太多把内存资源耗尽。
缩略图只是显示变小,内存中仍保存完整的初始加载的图片。
尝试降低图片的 quality,无果。
通过 scaled 缩小图片的幅面,成功。
总结: 因片面地认为缩略图占用很少的内存,导致问题的出现,
也因为这个原因,问题出现时没查看内存占用情况,
所以遇到异常问题,迅速查看一下内存和CPU的占用情况是必要的。
沒有留言:
張貼留言