我在j2me项目中有一个方法,在正常工作2天后,它会崩溃。出现的错误如下:
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天才会发生,这将花费我很多时间。
有什么建议吗? 谢谢你们。
答案 0 :(得分:0)
很难说是导致outOfMemoryError
例外的原因,但有办法解决这个问题。这个问题的根本原因可以参考:
您可以使用 jconsole 来调试此问题,这是一个查看JVM中的内存,线程,类使用情况的工具。此外,异常消息可以在某些情况下指出根本原因。