Не видя ваш код, это догадка, но, скорее всего, вы создаете новый объект FileWriter
или FileOutputStream
каждый раз, когда добавляете его, но не обращаете внимания на вызов close()
для этих объектов, что в конечном итоге приводит к запуску вне файловых дескрипторов (ресурс уровня ОС, который не зависит от памяти и, следовательно, не обрабатывается надлежащим образом сборщиком мусора, требующим ручного освобождения).
Чтобы решить эту проблему, либо держите один Stream / Writer и используйте его вместо создания нового каждый раз (вероятно, это будет быстрее), либо вызывайте close()
каждый раз, когда вы завершаете добавление.