我有一個簡單的Android應用程序,從我的本地服務器上的PHP文件中讀取一些JSON數據。這很簡單,直到大約一個小時前它工作正常。然而,稍微休息一下(我甚至沒有打開我的電腦關閉)後,它突然什麼似乎像一個內存泄漏掙扎,雖然我沒有關於該問題的專家。Android應用程序發生內存泄漏?
我不知道爲什麼突然這樣的正在發生的事情,因爲我沒有改變任何代碼。但是,當我運行的應用程序我的logcat開始慢慢填補這樣的消息:
「GC_CONCURRENT中解脫出來,910K,53%免費3167K/6727K .....」
該應用程序最終運行,但只等待約1-2分鐘後。無論如何,我想知道是否有人可以檢查我的代碼,或者告訴我可能會導致這種情況發生。
public static JSONArray getJSONfromURL(String url) {
// initialize
InputStream is = null;
JSONArray jArray = null;
String result = "";
// http post
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
// convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "utf-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jArray = new JSONArray(result);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return jArray;
}
JSON數據不是很大。
感謝您的任何建議。
嘗試運行你的HTTP調用和JSON解析在異步任務 –
好吧,謝謝。我對android開發很陌生,所以我想我有一些閱讀要做。這似乎很奇怪,這應該會突然開始發生,當時它工作得很好。 – user924014
首先嚐試使用一個單獨的線程,或更好的是異步任務。其次,這是一個更好的方法來使用finally塊並關閉輸入流。第三內存泄漏可能是一些在你的代碼別的地方也是如此給一個外觀以及... –