Java BufferedOutputStream写入方法花费的时间太长
我正在使用BufferedOutputstream写入方法写入文件。但这需要很长时间才能完成。我在AIX操作系统上运行了相同的代码,并且工作正常,但在RHEL 7.6上它并没有按要求工作。Java版本是1.6 代码:Java BufferedOutputStream写入方法花费的时间太长,java,java-6,bufferedoutputstream,Java,Java 6,Bufferedoutputstream,我正在使用BufferedOutputstream写入方法写入文件。但这需要很长时间才能完成。我在AIX操作系统上运行了相同的代码,并且工作正常,但在RHEL 7.6上它并没有按要求工作。Java版本是1.6 代码: 您是否尝试调试并查看,它在哪里卡住了?您还可以在jvisualvm中使用heapdump并共享stacktrace?它实际上不会被卡住。日志显示写入功能正在工作:INFO:In while/opt/dataload/data/statisticalbss/4G_Updated_Re
您是否尝试调试并查看,它在哪里卡住了?您还可以在jvisualvm中使用heapdump并共享stacktrace?它实际上不会被卡住。日志显示写入功能正在工作:INFO:In while/opt/dataload/data/statisticalbss/4G_Updated_Region-Sheet-15-11-2019.xlsx至[B@3e1c436b0 8192最可能的情况是
smbIn。read
是最慢的。使用strace-f-T
进行调试。除非传入的读取返回非常小的块(在这种情况下,您已经确定了实际问题),BufferedOutputStream
对性能没有任何影响,因为您已经自己使用了足够大的缓冲区阵列。
File localFile = new File(localdir,infile.getName());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(localFile));
byte[] b = new byte[8192];
int n = 0;
while(( n = smbIn.read( b )) > 0 ) {
out.write( b, 0, n );
}
out.flush();
out.close();
smbIn.close();
out.close();
return localFile;