surfaceview导致gallery2内存泄露
来源:互联网 发布:linux 监控java堆内存 编辑:程序博客网 时间:2024/04/29 09:35
当从相机进入图库时,再退出,发现内存泄露。
发现内存泄露的方法是:
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,不过可以再应用规避。
- surfaceview导致gallery2内存泄露
- AfxEndThread导致内存泄露
- inet_ntoa导致内存泄露
- CollectionView导致内存泄露?
- terminatethread导致内存泄露
- AfxEndThread导致内存泄露
- Volley导致内存泄露
- pthread_create 导致内存泄露
- pthread_create会导致内存泄露
- pthread_create会导致内存泄露
- fork 导致的内存泄露
- Handler导致内存泄露分析
- pthread_create会导致内存泄露
- pthread_create会导致内存泄露
- Handler导致内存泄露分析
- Handler导致内存泄露分析
- pthread_create会导致内存泄露
- 循环retain导致内存泄露
- jQuery 学习六(多库共存)
- poj 3207 Ikki's Story IV - Panda's Trick(2-sat)
- 微软MVC框架实战:开源的JS库Knockout
- MSSQL如何向一个自增列中插入值
- response对象
- surfaceview导致gallery2内存泄露
- jQuery 学习七(选择器)
- Java中堆和栈的区别
- jQuery 学习八(属性)
- 编程
- jQuery 学习九(筛选)
- jQuery 学习十(文档处理)
- jquery $.fn $.fx是什么意思
- jQuery 学习十一(CSS)