java - 在程序里读取磁盘文件时,为什么需要使用缓冲区。
伊谢尔伦
伊谢尔伦 2017-04-17 17:44:56
0
6
998

java中,读取磁盘文件时,通常都使用BufferedInputStream包装FileInputStream。
但是操作系统内核读取磁盘文件时,不是会将内存作为磁盘文件的缓冲区吗?
那为什么还要在程序里自己使用缓冲区??

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(6)
Peter_Zhu

Oleh kerana sistem pengendalian perlu mengasingkan ruang pengguna dan ruang sistem untuk melindungi keselamatan data Secara tepat, apabila sistem pengendalian membaca fail, ia membaca fail ke dalam ruang sistem dan kemudian menyalinnya kepada pengguna aplikasi. proses. Ruang, iaitu penimbal program sendiri seperti yang dinyatakan dalam soalan Jika proses pengguna dibenarkan untuk mengakses secara terus penimbal ruang sistem pengendalian, bukankah sistem pengendalian itu tidak selamat?

伊谢尔伦

FileInputStream/FileOutputStream akan mencetuskan operasi IO setiap kali read()/write() dipanggil.
Panggilan BufferedInputStream/BufferedOutputSteam read()/write() tidak akan mencetuskan operasi IO setiap kali Ia hanya menulis kepada penimbal dalaman Operasi IO hanya akan dicetuskan apabila penimbal dalaman penuh atau flush() dipanggil .

Semakin sedikit operasi IO, semakin baik prestasinya.

小葫芦

Apabila melakukan IO, JVM akan mencipta tatasusunan bait sebagai penimbal dalam ruang timbunannya sendiri Secara amnya, pengguna tidak boleh memanggil memori secara langsung (directbuffer) melalui JVM Interaksi antara penimbal ruang timbunan dan memori diuruskan oleh JVM itu. Dengan cara ini, kita boleh memanfaatkan kelebihan JVM, seperti mekanisme GC dan API berkapsul peringkat tinggi Java.

洪涛

Sistem pengendalian bukan sahaja akan membaca fail pada cakera keras ke dalam memori dan menggunakannya sebagai cache, tetapi juga akan membuka ruang lain dalam memori untuk menyimpan data dalam memori.
Apa gunanya? Untuk pengurusan dan kecekapan.
Kadar pertukaran data antara memori dan memori adalah dua urutan magnitud lebih tinggi daripada kadar pertukaran data antara memori dan cakera keras.
Apabila proses pada memori memerlukan data, jika terdapat data yang sepadan dalam cache memori, ia akan diambil terus dari kawasan cache
Jika tidak, ia akan dibaca dari cakera keras. (Begitu juga dengan penulisan)

Kepentingan reka bentuk cache Java untuk operasi IO juga ada di sini
Perbezaannya ialah data yang dicache oleh Java hanya boleh digunakan oleh persekitaran semasa Java.
Berbanding dengan pengambilan data yang kerap daripada cache sistem pengendalian, ini meningkatkan kecekapan pelaksanaan
Ini benar terutamanya apabila kod anda memerlukan operasi IO yang kerap.

小葫芦

Kebanyakan apa yang dipanggil penimbal dikapsulkan dalam kawasan antara muka oleh perkakasan cakera keras, dan kawasan penimbal tidak besar. Sistem pengendalian tidak menyimpan kandungan fail ke dalam memori.

巴扎黑

Kerana cakera keras anda tidak cukup laju!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan