このコンテンツのJavaパイプによるストリーム'保存'?
質問
私は走行マの下に、アプリケーション、プロファイラ.のクラス'が最もメモリ消費量は、 char[]
約10kB私の願います。
それから作 InputStream
(PipedInputStream
すべきである)を持つバイト配列のデータ300MBです。
そのための差し替えによって、様々なプロファイラは、と思いますか重要な変更がないですが、何かを食べて最大300MB).
それでは、そ300MBのバイト配列でないメモリ、Javaつですか?
[更新]
追加情報をきっかけは300MBっ PipedInputStream
:
私は開発webアプリケーションを持つファイルのアップロード。からのプロセスは私のファイルのアップロードでは,入力ストリーム(PipedInputStream
).基本的には、
- を拝読させていただきましたmultipartfileの入力ストリームに数KBのbyte[]で時間)
- 作
PipedOutputStream
- 作
PipedInputStream
(通の最近作成した出力ストリームのコンストラクタ) - 書いているマルチパートの入力ストリームマ
PipedOutputStream
(ランニング別スレッドるフラッシュを閉じる出力ストリームを終了する前に、スしてはなりません。 この点、現在のコピーがmultipartのバイトが自分の入力ストリーム - そして偶然)を格納する入力ストリーム私の"httpセッション(議論議論かどうかというのは別の問題)
そうしは、Javaを私 InputStream
's"コンテンツ(かならどこでも私のプロファイラー)?
[更新#2]
してい FileOutputStream
を読み込みから PipedInputStream
書きるファイルです。
解決
A PipedInputStream
だけでデータ利用時の出力ストリームで接続されます。でご覧いただけるのからの入力ストリームとして高速でデータを受け取りからこの出力ストリームはありませんのでデータをバッファです。
だいが、あらかじめ与えておく必要があります情報についてはパイプによる入力ストリームに何が出力ストリームはいつ、どの読書しているか確認してください。
編集: まんとう読むか PipedInputStream
.何とかしてほしいけど、その他の PipedOutputStream
ブロック- PipedInputStream
みてかなり小さいバッファによるデフォルト)。
他のヒント
A PipedInputStream
すべての任意のデータを格納しません。また、どこからその300メガバイトのバイト配列を得るのですか?