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