Gunakan untuk mengakses dan mengalokasikan sejumlah besar memori secara efisien, seperti di mesin voxel Anda sendiri! (Yaitu permainan bergaya Minecraft.)
Dalam pengalaman saya, JVM sering tidak dapat menghilangkan batas memeriksa di tempat Anda benar-benar membutuhkannya. Misalnya, jika Anda mengulangi array yang besar, tetapi akses memori yang sebenarnya tersimpan di bawah panggilan metode non-virtual * dalam loop, JVM mungkin masih melakukan pemeriksaan batas dengan setiap akses array, daripada hanya sekali sebelum putaran. Dengan demikian, untuk keuntungan kinerja yang berpotensi besar, Anda dapat menghilangkan pemeriksaan batas JVM di dalam loop melalui metode yang menggunakan sun.misc. Tidak aman untuk mengakses memori secara langsung, memastikan untuk melakukan batasan-memeriksa diri Anda di tempat yang benar. (Anda yang akan batas-batas memeriksa pada tingkat tertentu, kan?)
* oleh non-virtual, maksud saya JVM tidak harus secara dinamis menyelesaikan apa pun metode khusus Anda, karena Anda telah dengan benar menjamin bahwa kelas / metode / instance adalah beberapa kombinasi dari static / final / what-have-you.
Untuk mesin voxel rumahan saya, ini menghasilkan peningkatan kinerja yang dramatis selama generasi chunk dan serialisasi (sekarang tempat di mana saya membaca / menulis ke seluruh array sekaligus). Hasil mungkin bervariasi, tetapi jika kurangnya batasan-eliminasi adalah masalah Anda, maka ini akan memperbaikinya.
Ada beberapa masalah yang berpotensi besar dengan ini: khususnya, ketika Anda memberikan kemampuan untuk mengakses memori tanpa batas memeriksa ke klien dari antarmuka Anda, mereka mungkin akan menyalahgunakannya. (Jangan lupa bahwa peretas juga bisa menjadi klien dari antarmuka Anda ... terutama dalam kasus mesin voxel yang ditulis dalam Java.) Jadi, Anda harus mendesain antarmuka Anda sedemikian rupa sehingga akses memori tidak dapat disalahgunakan, atau Anda harus sangat berhati-hati untuk memvalidasi user-data sebelum itu pernah dapat, pernah berbaur dengan antarmuka yang berbahaya Anda. Mempertimbangkan hal-hal bencana yang dapat dilakukan oleh seorang hacker dengan akses memori yang tidak diperiksa, mungkin lebih baik mengambil kedua pendekatan tersebut.