使用GLSurfaceView对象时,总发生内存泄露,
泄露的大小大概为  GLSurfaceView的Width*Height*3 bytes,
折腾了挺久了也没有搞定,谁能告知底层是在哪个地方给GLSurfaceView分配内存的?
或有什么好的调试方法?

解决方案 »

  1.   

    系统内存管理绝对不会针对某一个对象去规定到底怎样分配内存。
    Android为每个程序分配的对内存可以通过Runtime类的totalMemory() freeMemory() 两个方法获取VM的一些内存信息,对于系统heap内存获取,可以通过Dalvik.VMRuntime类的getMinimumHeapSize() 方法获取最小可用堆内存,同时显示释放软引用可以调用该类的gcSoftReferences() 方法,获取更多的运行内存。
      

  2.   

    GLSurfaceView 是个布局,最后都是在surfaceFlinger里处理,然后传给显存
      

  3.   

    感谢yiyaaixuexi和wenzheng38的回答。之前版本使用到GLSurfaceView的程序也不会出现泄漏的,
    最新升级的版本才存在这个问题,哪怕是最简单的demo,只要使用了GLSurfaceView都会出现泄漏,
    会不会和底层的OpenGL PowerVR之类的有关呢?
      

  4.   

    是opengl底层新添加了一些代码,其中的一个sp指针没有释放造成的,结贴!