J'ai une méthode dans un projet j2me dans laquelle, après 2 jours de fonctionnement normal, elle s'effondre. L'erreur présentée est la suivante:J2me - OutofMemory dans la requête HTTP
Contacting website...
java.lang.OutOfMemoryError
(stack trace incomplete)
Cette méthode est celle utilisée pour communiquer avec un site Web. Il reçoit une chaîne et un sélecteur de mode (i = 1 ou smth else) et procède avec la requête. Voici le code:
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);
}
}
}
}
Pour résoudre le problème, j'ai pensé à effacer toutes les variables utilisées dans la connexion. Le problème est que je dois être presque sûr de la nature du problème car l'erreur prendra 2 jours et cela me coûtera beaucoup de temps.
Des suggestions? Merci les gars.
Pouvez-vous fournir plus de trace de pile? –
Malheureusement, c'est la seule sortie que je reçois à ce moment .. – kohhworlwide
Il y a quelques erreurs dans votre code. Puisque vous avez fermé l'inputtream et la connexion dans finally block, vous n'avez pas besoin de les fermer dans la branche if. Et changez if (connection == null) if (connection! = Null). –