2013-12-13 8 views
0

Я разрабатываю приложение androi, которое отправляет много http-запросов (HttpURLConnection). Все работает, но я думаю, что мои объекты не выпускаются. Я говорю, что, когда я смотрю на MAT (Eclipse Memory Analyzer), он говорит, что у меня много байта [] сохранено. Я просматриваю байты на MAT, и это байты, которые я получаю в моем методе HttpURLConnection. Ниже приведен мой код для отправки HTTP-запроса. Есть ли что-нибудь еще, что я могу сделать, чтобы выпустить мои объекты?Как освободить байты HttpURLConnection?

public static String sendHTTPRequest(String requestURL, int timeout) { 
    HttpURLConnection httpconn = null; 
    try { 

     URI uri = new URI(getUTF8Request(requestURL)); 

     httpconn = (HttpURLConnection) uri.toURL().openConnection(); 
     httpconn.setConnectTimeout(timeout); 
     StringBuilder responseStringBuilder = new StringBuilder(); 

     if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      BufferedReader input = new BufferedReader(
        new InputStreamReader(httpconn.getInputStream(), 
          "ISO-8859-1"), 8192); 
      String strLine = null; 
      while ((strLine = input.readLine()) != null) { 
       responseStringBuilder.append(strLine); 
      } 
      input.close(); 
      strLine = null; 
      input = null; 
     } 

     return responseStringBuilder.toString(); 
    } catch (URISyntaxException e) { 
     httpconn = null; 
     return "Failed to request"; 
    } catch (IOException e) { 
     httpconn = null; 
     return "Failed to request"; 
    } finally { 

     requestURL = null; 
     if (httpconn != null) { 
      httpconn.disconnect(); 
      httpconn = null; 
     } 
    } 
} 

ответ

0

В языке Java вам не придется беспокоиться о выделении памяти, если это не является проблемой (OutOfMemoryException) андроид не освобождает память, как только ваш код будет сделано с ним, сбор мусора в андроида является бит сложный и обычно не выделяет выделенную память, если это необходимо.

+0

Я боялся, потому что использование памяти увеличено и никогда не уменьшалось, но у меня не было никакой изъяны. Думаете ли вы, что, когда он близок к outofmemory, сбор мусора будет де-выделить этот байт []? – user2494863

+0

Да, это то, что делает сборщик мусора, управляет памятью для вас. –

0

Я замечаю, что вы не назовете httpConnection.disconnect после того, как выбрано IOEcxeption, так как вы установили его в блок catch. Очевидно, что тогда, когда в конечном итоге будут выполняться блокировки, вы не сможете запустить отключение на нем, что, вероятно, освободит байты, о которых жалуется MAT.

 Смежные вопросы

  • Нет связанных вопросов^_^