Рекомендуется предупредить, что в программе необходимо закрыть поток в целях предотвращения серьезных утечек ресурсов. Но как происходит утечка ресурсов? Будем очень благодарны за любые примеры кода. Благодарю.Как происходит утечка ресурса?
ответ
Рассмотрим это:
File[] lotsAndLotsOfFiles = ...
for (File f: lotsAndLotsOfFiles) {
InputStream is = new FileInputStream(f);
// Use `is` ... But don't close it
}
Что происходит с вышесказанным, что вы в конечном итоге с большим количеством открытых файлов. Под капотом каждый из этих открытых файлов имеет связанный файловый дескриптор. В Linux (например) ОС только позволяет процессу иметь ограниченное количество дескрипторов файлов в любой момент времени. Если процесс уже использовал свою квоту файловых дескрипторов, дальнейшие попытки открыть файл не удастся.
На уровне Java сборщик мусора (GC) завершит любой OutputStream
, InputStream
, Reader
или Writer
, что он находит, что мусор. И финализатор вызовет close()
, который выпустит дескриптор файла. Но проблема в том, что сборщик мусора иногда работает. Поэтому, если вы пропустите слишком много файловых дескрипторов между последовательными сеансами GC, ваше приложение закончится и, вероятно, умрет.
Существует множество примеров правильных путей предотвращения утечки ресурсов в Java.
- 1. Утечка ресурса ядра BIO_do_connect
- 2. утечка ресурса: fExclfile
- 3. Node.js/Как происходит утечка ручек?
- 4. Почему происходит утечка AudioManager?
- 5. Почему происходит утечка кода?
- 6. Где происходит утечка памяти?
- 7. Утечка ресурса из объекта RAII
- 8. Действительно ли это утечка ресурса
- 9. Почему происходит утечка этого окна?
- 10. Как происходит утечка памяти в swift?
- 11. Как определить, откуда происходит утечка памяти?
- 12. Как узнать, где происходит утечка моего приложения?
- 13. происходит утечка памяти при импорте uuid
- 14. Утечка ресурса Netty даже после выпуска
- 15. Утечка ресурса PreparedStatement при подготовке заявления
- 16. eclipse "утечка потенциального ресурса" предупреждение неверно
- 17. Когда происходит лексико-утечка памяти Emacs Lisp?
- 18. Почему происходит утечка памяти в GameCenterManager.m?
- 19. Почему происходит утечка памяти на SHGetFolderPath()? (C++)
- 20. Происходит ли утечка моего базового адаптера?
- 21. Не могу понять, где происходит утечка памяти
- 22. Почему происходит утечка памяти - андроид - LeakCanary
- 23. В WPF происходит ли утечка этой линии?
- 24. как найти место в коде, где происходит утечка памяти?
- 25. Как проверить, происходит ли утечка памяти в SessionFactory Hibernate?
- 26. Как точно найти, где происходит утечка памяти в проекте iPhone
- 27. Разработка Windows: как определить, происходит ли утечка моего приложения?
- 28. Предупреждение о сканере: утечка ресурса: <непризнанное значение closeble>
- 29. Формула расстояния, показывающая «утечка ресурса:« сканирование »никогда не закрывается»
- 30. Утечка памяти Android на статическую переменную-член ресурса?
Это (то, что вы заявили для Linux) происходит в других ОС? И FileOnputStream так же, как FileInputStream (возможно, вы допустили ошибку ввода) –
Определенно относится к другим UNIX и UNIX-подобным oses ... включая Mac OSX. В Windows тоже есть ограничения, но я не уверен, как они реализованы. –