Что произойдет, если я не закрою FileInputStream в JAVA?

Да, я знаю, что InputStream должны быть закрыты, но я не хочу знать, что произойдет, если я этого не сделаю и просто удалю ссылку. Будет ли gc закрывать его или он будет удерживать ресурс навсегда?


person Daniel Hári    schedule 20.11.2017    source источник
comment
finalize() закройте его, я нашел ответ: stackoverflow.com/a/33275951/1386911   -  person Daniel Hári    schedule 21.11.2017
comment
Ответы здесь в значительной степени подводят итог (почему вам нужно закрыть FileInputStream). Особенно ответ Chrylis (последний) stackoverflow.com/questions/26541513/   -  person Chetan Jadhav CD    schedule 21.11.2017
comment
На самом деле мой вопрос был: что происходит. И я нашел ответ в коде FileInputStream, в методе finallise() он закрыт. На самом деле это ответ на аналогичную ошибку, которая присутствовала в системе в течение многих лет, не вызывая проблем, поэтому я хотел знать, как она выжила: сборщик мусора закрыл потоки.   -  person Daniel Hári    schedule 21.11.2017
comment
Что случается? Дескриптор файла удерживается до тех пор, пока поток не будет GC'd. Это может произойти сразу, позже или никогда. Короче говоря, не полагайтесь на то, что это произойдет.   -  person Andy Turner    schedule 21.11.2017
comment
Да, это ответ на то, как система может пережить такие утечки, это хорошо знать, такие ошибки могут быть скрыты в течение длительного времени.   -  person Daniel Hári    schedule 21.11.2017