2012-09-06 46 views
0

我做了一项服务,看着正在运行的服务,我发现它需要15MB的内存! 作为一个整体简单的服务,它似乎真的很奇怪,所以我想知道在哪里看,为了发现为什么这么多的记忆被采取(请注意,我谈论的只是服务,我确保关闭活动)服务内存使用情况取决于什么?

服务的任务是定期下载rss提要并更新sqllite db,如果有新文章存在。由于互联网连接是必需的,服务也利用网络监听器。 这些属性:

private Timer timer; 
private MyDbHelper db; 
private NetworkChangesReceiver networkListener; //a broadcast receiver for network state 
private NotificationManager notifyManager; 
private final NewsServiceB binder = new NewsServiceB(); 
private SharedPreferences prefs; 

这是粘合剂类(在主要活动中我有一个“立即检查”按钮,所以我需要一个可绑定服务):

class NewsServiceB extends Binder{ 
public void downloadRss() throws IOException{ 
    ... 
    } 
} 
+0

这是一个超级用户问题。 –

+0

不同意。如果至少提供了服务的代码,那将是一个编程问题。一些常见的主题,如内存泄漏,可以用代码讨论...... – WarrenFaith

+0

添加了一些代码片段。 – user1610075

回答

2

你需要的是一个内存分析工具,显示你正在占用的内存。看看谷歌的这篇文章约memory analysis for Android。特别仔细看看MAT的部分。

+0

使用工具我发现这个问题是太多无用的参考:我用当地人和内存取代属性减少! – user1610075