本人写了一个服务,是独立进程,在项目里上加了android:process=":remote",并注册了一个常驻型广播,目的是实现监听屏幕解锁发来的广播,将服务启动(如果运行的服务不存在的话);
重新启动服务是大致是这样写的:
如果不存在那么:
      
         Intent serviceIntent = new Intent(WebsocketService.ACTION);
        context.startService(serviceIntent);
这样来启动服务;
     但是问题来了:每次停止掉服务,然后锁屏,解锁,服务又启动,经过多次操作,服务的内存会变大;    于是我跟踪了下内存:
    起始的内存:
   Heap Size :5.160MB,Allocated:3.179MB,Free:1.981MB,%Used:61.61% ,#objects:60186
   服务大小为10M时的内存:
   Heap Size :5.941MB,Allocated:3.783MB,Free:2.158MB,%Used:63.68% ,#objects:73986   服务大小差了几M,但是数据上只增加了0.8M左右,请问多出来的这些内存是哪里的?

解决方案 »

  1.   

    内存泄漏呗 用MAT定位一下
      

  2.   

    嗯,目前也找到这个原因了,MAT是在DDMS中的吗?网上只说用heap,但是不能定位到
      

  3.   

    不是 MAT有elipse的插件 http://site.douban.com/widget/notes/350758/note/167481484/ 自己看吧
      

  4.   

    1.先memory dump.
    2.把这个dump的文件要转换标准的格式
    3.用mat分析。具体的仔细的步骤,去网上去搜搜吧
      

  5.   


    你的文件有没有先转换成eclipse能识别的格式啊,我在
    2.把这个dump的文件要转换标准的格式,中说了
      

  6.   


    我用的是flex builder中的eclipse,之间的转换应该用什么转换?还是eclipse自带中有的?
      

  7.   


    请教 running  里面查看内存用了44M  . 用mat 打开看怎么只用 6M  ?  
      

  8.   


    mat这个跟踪的机制我也不太明白,用不大来,不过你可以去查查关于内存需要注意的几点,我总结的就是少用context引用,即使用了,也一定要在释放这个类前将使用到的引用置空