2017-08-12 164 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]中創建一個緩衝區。對於性能嚴重的代碼,請嘗試使用ByteBuffer而不是ByteArrayOutputStream。如果一起使用同步和ByteArrayOutputStream,則擺脫同步部分。 – Vaibs

回答

0

將它存儲在一個數組(byte [] b)中,並且每個變量都存儲在ram中!
流本身只存儲數組中的數據。流也被保存在公羊!

+0

寫入bOutput的數據也將只存儲在RAM上? –

+0

輸出流是一個對象!如果你寫它,它將存儲在對象 - > Ram – Niton

+0

謝謝,在我的proj我必須一次下載像10gb,4或5這樣的巨大文件和一個下載完成我有上傳他們,在我的開發機器我用8GB內存內存不足,但在QA與16GB我不明白爲什麼 –

1

該對象將被分配到JAVA堆中,該堆將在RAM中,但是,根據您的系統配置情況,如果內存耗盡,可能會將其移至磁盤上的交換分區。這與JVM的分配無關,而是操作系統如何分配/管理內存。

簡單的答案是:RAM

相關問題