對於java.io.InputStream中,有兩個主要的功能讀INT 讀()和公共INT讀(字節[] B,詮釋斷, int len)。的InputStream/OutputStream的讀()/ write()函數的相關性和用法
類似地,對於java.io.OutputStream中有兩個功能寫入(b)和寫((字節[] B,詮釋斷,INT LEN))
雖然我理解的基本差異,但在閱讀寫(b)的描述時,它表示它說:「要寫入的字節是參數b的八個低位,而b的24個高位被忽略。」現在如果是這樣的話,那麼我們實際上是在浪費32位指令集中的剩餘24位,CPU將加載一個整數。相反,如果我使用其他寫入((byte [] b,int off,int len)),那麼我將佔用堆棧/堆棧以獲取字節數組的大小。雖然我試圖想到哪一個更適合高可伸縮性,但我不能忽視寫(b)浪費24位(3字節),而另一方面,如果我使用讀/寫(byte [] b,int關閉,int len),我有更高的堆棧大小的風險。那麼,什麼是最好的選擇?
在解決方法中,我試圖擴展InputStream和OutputStream,並通過提供一個字節[4]來使用所有32位來覆蓋讀取(b)和寫入(b)函數。它工作得很好,但仍然必須看看這是否有任何性能增強。它非常類似於使用讀/寫(4,0,int 4)
我將不勝感激任何關於此主題的幫助/評論。
謝謝。聲明4K/8K字節是一個很好的提示。但是,你不覺得,在硬盤上聲明一個相當於扇區的塊會很大嗎?你不認爲對於具有局部變量的函數,整個數組將被複制到堆棧?在字節數組是一個類變量的情況下,我明白它自然是一個引用,因爲byte []聲明在堆上。 – Ashley
@Ashley,我想你對Java中的數組如何工作存在誤解。看到[這個問題](http://stackoverflow.com/questions/2099695/java-array-is-stored-in-stack-or-heap)。數組總是存儲在堆上。 – mpontillo
@Ashley在磁盤上的4k/8k相比其他應用程序的內存中的jvm存儲相當小。 – Claudiu