Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ext4在大文件夹上读取文件速度慢_Java_Performance_File_Io_Ext4 - Fatal编程技术网

Java ext4在大文件夹上读取文件速度慢

Java ext4在大文件夹上读取文件速度慢,java,performance,file,io,ext4,Java,Performance,File,Io,Ext4,我有一个文件夹,里面有200万张1-2KB的图片。 我试着读书 for (File f : tmpDir.listFiles()) { long t1 = System.currentTimeMillis(); image = ImageIO.read(f); long time = System.currentTimeMillis() - t1; } 前20000个文件时间=0或时间=1 然后读取时间增加到50-100毫升。(时间=50-1000) 如何提高性能?在64

我有一个文件夹,里面有200万张1-2KB的图片。 我试着读书

for (File f : tmpDir.listFiles()) {
   long t1 = System.currentTimeMillis();
   image = ImageIO.read(f);
   long time = System.currentTimeMillis() - t1;

}
前20000个文件时间=0或时间=1

然后读取时间增加到50-100毫升。(时间=50-1000)


如何提高性能?

在64 linux、ext4文件系统上,您确定这实际上是您创建的所有映像的IO、vs垃圾收集吗?如果您只是读取每个文件,而忽略实际数据(从而避免重复分配),会发生什么情况?您是否尝试增加最大堆空间以减少垃圾收集?不,这不是GC问题。我同意Jon Skeet的观点,它看起来像是由多个对象分配/释放引起的Java GC问题。这里有几个想法来证明这一点:(1)在目录中有一个文件,并一遍又一遍地读它——我希望你会得到同样的结果;(2) 增加java堆的大小——我希望稍后会看到延迟增加;(3) 监视I/O流量——我希望您会发现块设备未充分利用(这意味着它不是I/O问题);(4) 监视CPU使用率——我希望您会看到高用户空间CPU利用率和非常小的内核/系统CPU利用率。