Java BufferedOutputStream写入方法花费的时间太长

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

我正在使用BufferedOutputstream写入方法写入文件。但这需要很长时间才能完成。我在AIX操作系统上运行了相同的代码,并且工作正常,但在RHEL 7.6上它并没有按要求工作。Java版本是1.6

代码:


您是否尝试调试并查看,它在哪里卡住了?您还可以在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;