我有一个简单的 Android 应用程序,它从本地服务器上的 php 文件中读取一些 JSON 数据。它非常简单,直到大约一个小时前它工作正常。然而,在稍作休息后(我什至没有关闭我的电脑),它突然开始与似乎是内存泄漏的问题作斗争,尽管我不是这方面的专家。
我不确定为什么会突然发生这种情况,因为我没有更改任何代码。但是当我运行该应用程序时,我的 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数据根本不是很大。
感谢您的任何建议。