Apa contoh aplikasi untuk ByteBuffer
di Jawa? Harap sebutkan contoh skenario di mana ini digunakan. Terima kasih!
java
buffer
bytebuffer
Aklin
sumber
sumber
Jawaban:
Ini adalah deskripsi yang baik tentang penggunaan dan kekurangannya. Anda pada dasarnya menggunakannya kapan pun Anda perlu melakukan I / O tingkat rendah yang cepat. Jika Anda akan mengimplementasikan protokol TCP / IP atau jika Anda sedang menulis database (DBMS) kelas ini akan berguna.
sumber
Kelas ByteBuffer penting karena membentuk dasar untuk penggunaan saluran di Jawa. Kelas ByteBuffer mendefinisikan enam kategori operasi berdasarkan buffer byte, sebagaimana dinyatakan dalam dokumentasi Java 7 :
Example code : Putting Bytes into a buffer.
sumber
Java IO menggunakan API berorientasi aliran dilakukan dengan menggunakan buffer sebagai penyimpanan sementara data dalam ruang pengguna. Data yang dibaca dari disk oleh DMA pertama kali disalin ke buffer di ruang kernel, yang kemudian ditransfer ke buffer di ruang pengguna. Karenanya ada overhead. Menghindarinya dapat mencapai perolehan kinerja yang cukup besar.
Kita bisa melewati buffer sementara ini di ruang pengguna, jika ada cara langsung untuk mengakses buffer di ruang kernel. Java NIO menyediakan cara untuk melakukannya.
ByteBuffer
adalah di antara beberapa buffer yang disediakan oleh Java NIO. Ini hanya sebuah wadah atau tangki penampung untuk membaca data dari atau menulis data. Perilaku di atas dicapai dengan mengalokasikan buffer langsung menggunakanallocateDirect()
API pada Buffer.Dokumentasi Java dari Byte Buffer memiliki informasi berguna.
sumber
Di Android Anda dapat membuat buffer bersama antara C ++ dan Java (dengan metode directAlloc) dan memanipulasinya di kedua sisi.
sumber
Berikut ini adalah artikel yang bagus menjelaskan manfaat ByteBuffer. Berikut ini adalah poin utama dalam artikel:
Berikut ini adalah manfaat khusus untuk ByteBuffer langsung / MappedByteBuffer. Perhatikan bahwa buffer langsung dibuat di luar tumpukan:
Tidak terpengaruh oleh siklus gc : Buffer langsung tidak akan dipindahkan selama siklus pengumpulan sampah karena mereka berada di luar tumpukan. Teknologi caching BigMemory TerraCota tampaknya sangat bergantung pada keunggulan ini. Jika mereka berada di tumpukan, itu akan memperlambat gc jeda kali.
Peningkatan kinerja : Dalam aliran IO, panggilan baca akan memerlukan panggilan sistem, yang memerlukan pemindahan konteks antara pengguna ke mode kernel dan sebaliknya, yang akan mahal terutama jika file diakses terus-menerus. Namun, dengan pemetaan memori, pengalihan konteks ini berkurang karena data lebih mungkin ditemukan dalam memori (MappedByteBuffer). Jika data tersedia dalam memori, itu diakses secara langsung tanpa menggunakan OS, yaitu, tidak ada pengalihan konteks.
Perhatikan bahwa MappedByteBuffers sangat berguna terutama jika file berukuran besar dan beberapa grup blok diakses lebih sering.
sumber