哪里是内容的一Java管道的流'储存'?
题
我运行了我用下的一个分析器。该"类"具有最多的存储的消耗是的 char[]
其大约10kB在我的应用程序。
然后我创造了一个 InputStream
(PipedInputStream
确切)它拥有一个字节的阵列数据的300兆。
然后我看了看我的分析器,并且我看不到任何明显的改变(不见任何东西吃了300MB)。
问题是,如果这300兆字节阵列是不是在存储器,其中是Java保持它?
[新]
额外信息在我的300兆到我的 PipedInputStream
:
我正在开发一个网应用程序,有一个文件上传机构。在一个进程在我的文件上载,我创建一个投入流(PipedInputStream
).基本上,
- 我读了multipartfile的输入流(几KB字节[]在一个时间),
- 创建了一个
PipedOutputStream
- 创建了一个
PipedInputStream
(通过最近成立的输出流到constructor) - 写了多部分的投入流向我
PipedOutputStream
(上运行的一个分离线程;其冲并关闭,输出流在退出之前的螺纹)。 在这一点上,我现在有一个副本分段的字节在我自己的输入流 - 然后(不小心)存储,输入流在我http届会议(讨论/讨论那是否是个好主意会是在一个不同的问题)
这样的问题,然后再是,这里是Java保持我的 InputStream
's的内容(我没看到在任何地方我的profiler)?
[更新#2]
我有一个 FileOutputStream
这读 PipedInputStream
写一个文件。
解决方案
一个 PipedInputStream
只是使用数据时,它的书面通过输出流,这是连接。所以,只要你继续读自己的输入流作为快,因为它接收到的数据输出流,不会有太多的数据对缓冲区。
如果没有帮助,则需要得到更多的信息你正在做什么与通过管道输入流-什么流输出为它连接,并且有什么阅读它吗?
编辑: 你还没说什么读取你的 PipedInputStream
.我们必须,否则 PipedOutputStream
会块 PipedInputStream
只有一个相当小的缓冲区(通过默认)。
其他提示
一个 PipedInputStream
不存储的任何数据。还有,你在哪里得到那300兆字节列从?
不隶属于 StackOverflow