您的位置:首页 > 其它

surfaceview导致gallery2内存泄露

2012-10-23 20:07 246 查看
当从相机进入图库时,再退出,发现内存泄露。

发现内存泄露的方法是:

adb shell

dumpsys SurfaceFlinger

然后可以看到申请的内存

Allocated buffers:

0x1e4dd10: unknown | 800 (4096) x 480 | 100 | 0x00000b02

0x1e72e20: unknown | 800 (4096) x 480 | 100 | 0x00000b02

0x1e73920: unknown | 800 (4096) x 480 | 100 | 0x00000b02

0x1e75600: unknown | 1280 (4096) x 720 | 100 | 0x00000b02

0x1e7d2e0: 276.00 KiB | 720 ( 736) x 96 | 5 | 0x00000b00

0x1e7dfd0: 143.75 KiB | 720 ( 736) x 50 | 5 | 0x00000b00

0x1e81b08: 3076.25 KiB | 720 ( 736) x 1070 | 5 | 0x00000b00

0x1e81f70: 143.75 KiB | 720 ( 736) x 50 | 5 | 0x00000b00

0x1e83000: 7200.00 KiB | 1440 (1440) x 1280 | 5 | 0x00000b00

0x1e83038: 3076.25 KiB | 720 ( 736) x 1070 | 5 | 0x00000b00

0x1e84ea8: unknown | 800 (4096) x 480 | 100 | 0x00000b02

0x1e85c30: 3404.00 KiB | 720 ( 736) x 1184 | 1 | 0x00000933

0x1e861e0: 276.00 KiB | 720 ( 736) x 96 | 5 | 0x00000b00

0x1e91490: unknown | 800 (4096) x 480 | 100 | 0x00000b02

0x1e92b58: unknown | 800 (4096) x 480 | 100 | 0x00000b02

0x1e92ff0: 3404.00 KiB | 720 ( 736) x 1184 | 1 | 0x00000933

Total allocated (estimate): 21000.00 KB

总数一直在增加,解决办法是在退出图库后调用surfaceview的release方法释放内存。

if (mSurfaceHolder != null) {

mSurfaceHolder.getSurface().release();

}
以上内存泄露仅仅是在从camera进入gallery发生,单独进入并退出gallery并不发生,这应该是framework的bug,不过可以再应用规避。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: