ローカルサーバー上のphpファイルからJSONデータを読み取る単純なAndroidアプリがあります。それは非常に単純で、約1時間前までは正常に機能していました。しかし、少し休憩した後(PCの電源を切らなかった)、私はこのテーマの専門家ではありませんが、突然メモリリークのように見えることに苦労しています。
コードを変更しなかったので、なぜ突然これが起こっているのかわかりません。しかし、アプリを実行すると、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データはそれほど大きくありません。
アドバイスありがとうございます。