gpt4 book ai didi

java - iSeries 上的 NIO 文件 channel 传输问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:04 33 4
gpt4 key购买 nike

我遇到了在 iSeries 机器 (JDK 1.5) 上运行的一些 Java NIO 代码的问题。基本上,代码是将文件拆分成 block ,将文件的一部分拆分为另一个较小的文件。相同的代码已经在其他 iSeries 机器上运行了一段时间,没有出现任何问题。这是代码片段:

//copy original data file content to temp file
long startPos = dataFile.length() - remaining;
long transferSize = maxSizeBytes - size;
size += inChannel.transferTo(startPos, transferSize, outChannel); //exception here
remaining -= size;

这是堆栈跟踪:

Caused by: java.io.IOException: Operation not supported. Map failed
at java.lang.Throwable.<init>(Throwable.java:196)
at java.lang.Exception.<init>(Exception.java:41)
at java.io.IOException.<init>(IOException.java:40)
at sun.nio.ch.FileChannelImpl.map0(Native Method)
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:742)
at sun.nio.ch.FileChannelImpl.transferToTrustedChannel(FileChannelImpl.java:448)
at sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:521)

...还有 11 个

我查了一下,目前的原因(父目录的文件权限,内存不足,共享内存控制QSHRMEMCTL关闭,使用SAN)都没有成功。

有人遇到过这个问题吗?

谢谢,布拉德。

最佳答案

在我看来,达到文件句柄限制可能会导致 JVM 引发不明显的异常。

检查您是否有足够的可用文件句柄。 ulimit 会告诉您有多少可供您使用。 (当然,如果 JVM 是守护进程,您会想知道该用户的编号。)这个问题也可能是系统/用户特定的,这有点符合您的描述事实上,这在其他地方运行得很好。

关于java - iSeries 上的 NIO 文件 channel 传输问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1688632/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com