Есть часть проекта, касающаяся в основном потоков ввода / вывода. Поэтому я должен передавать потоки в качестве аргументов и получать их из сторонних библиотек. Я прочитал Хороший дизайн: как передать InputStreams в качестве аргумента? и Закрытие Java InputStreams , но я не уверен на 100%, что сторонние пользователи используют одни и те же значения кодирования и следующие образцы лучших дизайнов (в частности - «тот, кто открывает поток, должен закрыть поток»)
Если предположить, что потоки довольно велики (500 Мб - 3 Гб), и у меня недостаточно ресурсов процессора и памяти, вот несколько вопросов к сообществу java SO:
- Должен ли я когда-нибудь пытаться закрыть потоки, полученные из сторонней библиотеки?
- Каковы возможные опасные последствия незакрытых потоков (не считая дополнительной рабочей нагрузки GC)
- Являются ли эти значения несколько пропорциональными размеру потока?