2015-07-30 5 views
0

Привет вот пара строк в коде.Ресурс утечки (Ресурс за пределами области действия)

func(){ 
.... 
.... 

ObjectInputStream in = xstream.createObjectInputStream(is); 
return (UserAccountVO)in.readObject(); 
} 

Теперь его вынесение предупреждения «leaked_resource: Переменная в выходя из объема утечки ресурса он относится к».

Может ли кто-нибудь объяснить это?

И еще один пункт. Как это было исправлено с помощью этого:

try(ObjectInputStream in = xstream.createObjectInputStream(is);) { 
        return (UserAccountVO)in.readObject(); 
       } catch (IOException e) { 
        s_logger.error(e.getMessage()); 
        return null; 
} 
+1

Возможный дубликат [Истекает утечка ресурсов: 'in' никогда не закрывается] (http://stackoverflow.com/questions/12519335/resource-leak-in-is-never-closed) – TheCodingFrog

ответ

0

В первом случае, вы не закрывать ресурс «в» и что может привести к утечке памяти. Поэтому вы получаете предупреждение. В более позднем случае вы добавили экземпляр «in» в блок TRY, который фактически добавляет неявное «окончательное» для вас, чтобы закрыть ресурс.

Надеюсь, он уточнит.

+0

Итак, вы говорите, что Мне не нужно включать окончательное утверждение? Он автоматически добавляется. Это что-то особенное для более новых версий java? Спасибо за повтор :) – user3100148

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

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