Метод close() и системные ресурсы
У потоков есть метод close(). Когда я читаю для чего нужен этот метод я встречаюсь с такой формулировкой: "для освобождения системных ресурсов".
Вопрос: а что такое эти "системные ресурсы"? Это память из "кучи"? Если да, то почему следующий код выдает выдаёт не java.lang.OutOfMemoryError, а java.io.FileNotFoundException
import java.io.*;
class Main{
public static void main(String[] args)
throws IOException {
FileInputStream qq;
while(true){
qq = new FileInputStream("qwer.txt");
}
}
}
Вывод:
Exception in thread "main" java.io.FileNotFoundException: qwer.txt (Too many open files)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at Main.main(Main3.java:10)