本人写了一个服务,是独立进程,在项目里上加了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左右,请问多出来的这些内存是哪里的?
重新启动服务是大致是这样写的:
如果不存在那么:
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左右,请问多出来的这些内存是哪里的?
2.把这个dump的文件要转换标准的格式
3.用mat分析。具体的仔细的步骤,去网上去搜搜吧
你的文件有没有先转换成eclipse能识别的格式啊,我在
2.把这个dump的文件要转换标准的格式,中说了
我用的是flex builder中的eclipse,之间的转换应该用什么转换?还是eclipse自带中有的?
请教 running 里面查看内存用了44M . 用mat 打开看怎么只用 6M ?
mat这个跟踪的机制我也不太明白,用不大来,不过你可以去查查关于内存需要注意的几点,我总结的就是少用context引用,即使用了,也一定要在释放这个类前将使用到的引用置空