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方法释放内存。
以上内存泄露仅仅是在从camera进入gallery发生,单独进入并退出gallery并不发生,这应该是framework的bug,不过可以再应用规避。
发现内存泄露的方法是:
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(); } |
相关文章推荐
- surfaceview导致gallery2内存泄露
- iOS加载webview时出现内存泄露导致闪退
- WPF内存泄露:CollectionViewSource.GetDefaultView导致Cache对象
- 加载webView 内存泄露 导致内存暴涨的几种解决方案
- WPF内存泄露:CollectionViewSource.GetDefaultView导致Cache对象
- UIImageView 加入子UIImageView 导致内存泄露的问题
- 加载webView 内存泄露 导致内存暴涨的几种解决方案
- Android开发,中可能会导致内存泄露的问题
- Android开发 单例模式导致内存泄露
- Android 非静态内部类导致的内存泄露(非static内部类)
- ss目前的设计有引起内存泄露而导致down机的隐患
- android.view.WindowLeaked 问题彻底解决【dialog导致窗口泄露】
- handler为activity的成员变量导致的内存泄露
- c++ 导致内存泄露的一些小问题与解决方法
- performSelector延时调用导致的内存泄露
- Handler导致的内存泄露问题
- Silverlight - 防止内存泄露:清理ViewModel对View的引用
- Direct ByteBuffer可能会导致内存泄露的原因
- 自定义View时, 使用Canvas、Bitmap时易犯的内存泄露问题
- Velocity引擎导致jvm内存外内存泄露