java - Java 应用程序一次最多可以打开多少个文件?
问题描述
我正在编写一个需要同时打开许多文件的 Java 应用程序。我知道如何为要读取的文件获取最大可用内存,但是不管可用内存如何,是否存在打开太多文件的情况?
我已经看到有关“对许多打开的文件”错误的问题,但阅读文档后,我无法重现这些条件,因此不确定如何处理此类错误/异常。
我查看了 java.io.File 和 java.nio.Files 是否存在此类错误或异常。当然是在网上找的,尤其是在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;
}
解决方案
推荐阅读
- javascript - 将形状移动到不同的方向
- c# - 从多个字段的嵌套集合中选择不同的列表
- javascript - 在 Javascript 中更新本地存储数组?
- javascript - Chart.js 在图表顶部和下方添加不需要的填充,填充设置为 0
- android - 除了查询之外执行firebase的任何想法?
- java - 如何为带有交互式通知的网络广播流创建 Android 前台服务?
- c# - https://graph.microsoft.com/beta/applications 上的 PATCH 请求返回 403
- angularfire2 - Angular 6 和 AngularFire2 RxJS 错误
- sql - 原子替换 PostgreSQL 表中所有内容的“正确”方法?
- ios - Xamarin.ios:详细命令为空,因为它显示在函数之前