約5日前にアプリケーションが正常に動作していました!今日、私はそれを実行しようとすると、その絶対にナット行く!OutOfMemoryError Android
それが最終的にOutOfMemoryErrorを
01-06 04:14:17.088: D/dalvikvm(454): GC_FOR_MALLOC freed 5702 objects/326856 bytes in 76ms
01-06 04:14:17.228: D/dalvikvm(454): GC_FOR_MALLOC freed 680 objects/157944 bytes in 57ms
01-06 04:14:17.228: I/dalvikvm-heap(454): Grow heap (frag case) to 2.860MB for 121834-byte allocation
01-06 04:14:17.288: D/dalvikvm(454): GC_FOR_MALLOC freed 1 objects/81232 bytes in 60ms
01-06 04:14:17.378: D/dalvikvm(454): GC_FOR_MALLOC freed 5 objects/192 bytes in 65ms
01-06 04:14:17.388: I/dalvikvm-heap(454): Grow heap (frag case) to 2.957MB for 182746-byte allocation
....and so on...
をスローして、最終的には、このエラーが起動する前に、私はlogcatでこのメッセージが出ています:
01-06 04:24:49.218: E/AndroidRuntime(511): java.lang.OutOfMemoryError
01-06 04:24:49.218: E/AndroidRuntime(511): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:97)
01-06 04:24:49.218: E/AndroidRuntime(511): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:136)
01-06 04:24:49.218: E/AndroidRuntime(511): at java.lang.StringBuilder.append(StringBuilder.java:272)
01-06 04:24:49.218: E/AndroidRuntime(511): at java.io.BufferedReader.readLine(BufferedReader.java:452)
01-06 04:24:49.218: E/AndroidRuntime(511): at appsbidder.clientstuff.Utils.openURL(Utils.java:285)
01-06 04:24:49.218: E/AndroidRuntime(511): at appsbidder.clientstuff.Utils.getFeatured(Utils.java:224)
01-06 04:24:49.218: E/AndroidRuntime(511): at appsbidder.FeaturedAppsActivity$GridViewAdapter.<init>(FeaturedAppsActivity.java:45)
01-06 04:24:49.218: E/AndroidRuntime(511): at appsbidder.FeaturedAppsActivity.onCreate(FeaturedAppsActivity.java:28)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.os.Looper.loop(Looper.java:123)
01-06 04:24:49.218: E/AndroidRuntime(511): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-06 04:24:49.218: E/AndroidRuntime(511): at java.lang.reflect.Method.invokeNative(Native Method)
01-06 04:24:49.218: E/AndroidRuntime(511): at java.lang.reflect.Method.invoke(Method.java:521)
01-06 04:24:49.218: E/AndroidRuntime(511): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-06 04:24:49.218: E/AndroidRuntime(511): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-06 04:24:49.218: E/AndroidRuntime(511): at dalvik.system.NativeStart.main(Native Method)
私は、このブロックにそれを絞り込むTHINKコードが、私はなぜそれが動作しないのか分からない!以前はいつもうまくいっていました。私が考えることができる唯一の問題は、以前よりも多くのデータをフェッチする必要があるため、どこかでオーバーフローが発生していますが、どこで??
おそらくここpublic JSONArray openURL(String urlParams, String url)
{
HttpsURLConnection connection = null;
try {
System.setProperty("http.keepAlive", "false");
//Create connection
connection = (HttpsURLConnection)new URL(url).openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" +
Integer.toString(urlParams.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream());
wr.writeBytes (urlParams);
wr.flush();
wr.close();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
JSONArray ja = new JSONArray();
while((line = rd.readLine()) != null) {
ja = new JSONArray(line);
}
rd.close();
return ja;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if(connection != null) {
connection.disconnect();
}
}
}
は、どのように私は、それを修正するのでしょうか? – volk