2017-08-12 4 views
0

以下のコードでは、ByteArrayOutputStreamのデータは、RAMまたはハードディスクに保存されていますか?ByteArrayOutputStreamのデータは、RAMまたはハードディスクに保存されますか?

ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12); 

while(bOutput.size()!= 10) { 
    // Gets the inputs from the user 
    bOutput.write("hello".getBytes()); 
} 
+0

ByteArrayOutputStreamクラスストリームは、メモリ[RAM]にバッファを作成します。パフォーマンスクリティカルなコードでは、ByteArrayOutputStreamの代わりにByteBufferを使用してください。同期とByteArrayOutputStreamを併用する場合は、同期部分を取り除いてください。 – Vaibs

答えて

0

これを配列(byte [] b)に格納し、すべての変数をRAMに格納します。
ストリーム自体は、配列内のデータのみを格納します。そして川もまたラムに救われます!

+0

bOutputに書き込まれたデータもRAMにのみ保存されますか? –

+0

出力ストリームはオブジェクトです!あなたが書き込むとオブジェクトに保存されます - > Ram – Niton

+0

私のprojでは10Gb、4または5のような巨大なファイルを一度にダウンロードしなければなりません。それらをアップロードするには、私のdevマシンで私は8GBのRAMとメモリから外に出ていますが、16GBでqaを取得していません –

1

このオブジェクトはRAMに格納されるJAVAヒープに割り当てられますが、システムがどのように構成されているかに基づいて、RAMが使い果たされた場合、ディスク上のスワップパーティションに移動する可能性があります。これはJVMの割り当てとは関係ありませんが、オペレーティングシステムがどのようにメモリを割り当て/管理するかについては関係ありません。

単純な答えは:RAM

関連する問題