2012-09-06 44 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