Я пишу Java-приложение, которое должно работать со многими открытыми файлами одновременно. Я знаю, как получить максимально доступную память для файлов, которые нужно прочитать, но есть ли такая вещь, когда открыты слишком много файлов, независимо от доступной памяти?
Я видел вопросы о "многих открытыхфайлы "ошибка, но, читая документацию, я не могу воспроизвести условия и, следовательно, не уверен, как обработать такую ошибку / исключение.
Я изучил java.io.File и java.nioФайлы для таких ошибок или исключений. Конечно, искал его онлайн, особенно на stackoverflow, и поиск похожих вопросов не дал того, что мне нужно.
public static int MAXIMUM_NUMBER_OF_FILES;
/* maximum file number inside a folder depends on the system */
/* maximum number of open files inside RAM ? */
//methods
public static long getAvailableMemory(){
System.gc(); //clear as much as possible
Runtime r = Runtime.getRuntime();
long maxMemory = r.maxMemory(); //add case if this is greater than Long.max_value
long totalMemory = r.totalMemory(); //add case if this is greater than Long.max_value
long freeMemory = r.freeMemory();
return maxMemory - (totalMemory-freeMemory);
}
public static long determineChunkSize(final long fileSize){
return getAvailableMemory()/MAXIMUM_NUMBER_OF_FILES;
}