gpt4 book ai didi

java - Java 管道流 'stored' 的内容在哪里?

转载 作者:行者123 更新时间:2023-12-02 08:38:31 25 4
gpt4 key购买 nike

我正在分析器下运行我的应用程序。内存消耗最多的“类”是 char[],在我的应用程序中大约为 10 kB。

然后,我创建了一个 InputStream(准确地说是 PipedInputStream),它保存 300 MB 的字节数组数据。

然后我查看了我的分析器,没有看到任何重大变化(没有看到任何地方有什么东西占用了 300 MB)。

问题是,如果这 300 MB 字节数组不在内存中,Java 将其保存在哪里?

[更新]有关如何将 300 MB 获取到我的 PipedInputStream 的其他信息:

我正在开发一个具有文件上传机制的网络应用程序。在我的文件上传过程之一中,我创建了一个输入流 (PipedInputStream)。基本上,

  1. 我读取了 multipartfile 的输入流(一次读取几 KB 的 byte[]),
  2. 创建了一个PipedOutputStream
  3. 创建了一个PipedInputStream(将最近创建的输出流传递给构造函数)
  4. 将多部分的输入流写入我的PipedOutputStream(在单独的线程上运行;在退出线程之前刷新并关闭该输出流)。 此时,我在自己的输入流中拥有了多部分字节的副本
  5. 然后(不小心)将该输入流存储在我的 http session 中(关于这是否是一个好主意的讨论/辩论将在另一个问题上进行)

那么问题又来了,Java 将我的 InputStream 内容保存在哪里(我在分析器中没有看到它)?

[更新#2]

我有一个 FileOutputStream,它从 PipedInputStream 读取并写入文件。

最佳答案

PipedInputStream 仅在数据由其连接的输出流写入时才使数据可用。只要您继续从输入流读取数据的速度与从输出流接收数据的速度一样快,就不会有太多数据需要缓冲。

如果这没有帮助,您需要提供有关您对管道输入流执行的操作的更多信息 - 它连接到哪个输出流,以及从中读取什么?

编辑:您还没有说出从 PipedInputStream 中读取的内容。必须有某些东西,否则 PipedOutputStream 会阻塞 - PipedInputStream 只有一个相当小的缓冲区(默认情况下)。

关于java - Java 管道流 'stored' 的内容在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/483054/

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