0
我有一個j2me項目中的方法,在這個項目中,正常工作2天后,它崩潰了。出現的錯誤如下:J2me - HTTP請求中的OutofMemory
Contacting website...
java.lang.OutOfMemoryError
(stack trace incomplete)
該方法是用於與網站進行通信的方法。它接收一個字符串和一個模式選擇器(i = 1或者smth else)並且繼續處理請求。這裏的代碼:
void enviarPost(int i, String comando)throws IOException, IllegalStateException, IllegalArgumentException, ATCommandFailedException{
System.out.println("Contacting website...");
if(i == 1)
{
url = "http://websitedummy.com.pl/index.php?IMEI=" + imeiX + "&IP=" + ipX;
}
//53543D303B44723D4E616F
else
{
url2 = comando;
url = "http://websitedummy.com.pl/index.php?data={\"IMEI\":\""+imeiX+"\",\"TS\":\"20/04/13-08:31:44\",\"SER\":\""+url2+"\"}";
}
try {
Thread.sleep(1000);
connection = (HttpConnection) Connector.open(url);
Thread.sleep(500);
connection.setRequestMethod(HttpConnection.GET);
Thread.sleep(500);
connection.setRequestProperty("Content-Type", "text/plain");
Thread.sleep(500);
int con = 0;
try{
con = connection.getResponseCode();
} catch (Exception e4)
{
System.out.println(e4);
}
if (con == HttpConnection.HTTP_OK) {
System.out.println("Vamos");
inputstream_ = connection.openInputStream();
int ch;
while ((ch = inputstream_.read()) != -1) {
dataReceived.append((char) ch);
}
System.out.println("Atualizado.");
acabouatualizar=1;
inputstream_.close();
connection.close();
} else {
System.out.println("Error");
// Connection not ok
}
} catch (Exception e) {
System.out.println("EXCEÇÂO 1 - " + e);
} finally {
if (inputstream_ != null) {
try {
inputstream_.close();
} catch (Exception e1) {
System.out.println("EXCEÇÂO 2- " + e1);
}
}
if (connection == null) {
try {
System.out.println("Fechou conexao.");
connection.close();
} catch (Exception e2) {
System.out.println("EXCEÇÂO 3- " + e2);
}
}
}
}
爲了解決這個問題,我想清除連接中使用的所有變量。問題是我需要幾乎確定問題是什麼,因爲錯誤需要2天才能發生,這會花費我很多時間。
有什麼建議嗎? 謝謝你們。
你能提供更多的堆棧跟蹤嗎? –
不幸的是,這是我在當時唯一得到的輸出。 – kohhworlwide
代碼中存在一些錯誤。由於您已經關閉了finally塊中的輸入流和連接,因此您不需要在if分支中關閉它們。 if(connection == null)if(connection!= null)。 –