独自のボクセルエンジンなどで、大量のメモリに効率的にアクセスして割り当てるために使用してください!(Minecraftスタイルのゲームなど)。
私の経験では、JVMは、本当に必要な場所で境界チェックを排除できないことがよくあります。たとえば、大きな配列を反復処理しているが、実際のメモリアクセスがループ内の非virtual *メソッド呼び出しの下に隠れている場合、JVMは直前に1回ではなく、各配列アクセスで境界チェックを実行する可能性がありますループ。したがって、パフォーマンスが大幅に向上する可能性がある場合は、sun.misc.Unsafeを使用してメモリに直接アクセスするメソッドを使用してループ内のJVM境界チェックを排除し、正しい場所で境界チェックを自分で実行できるようにします。(あなたはあるレベルで境界チェックをするつもりですよね?)
*非仮想とは、特定のメソッドが何であれ、JVMが動的に解決する必要がないことを意味します。これは、クラス/メソッド/インスタンスが静的/最終/何を持っているかの組み合わせであることを正しく保証しているためです。
私の自家製ボクセルエンジンの場合、これにより、チャンクの生成とシリアル化(配列全体を一度に読み取り/書き込みを行っていた場所)中に劇的なパフォーマンスが向上しました。結果は異なる場合がありますが、境界除去の欠如が問題である場合は、これで修正されます。
これには潜在的に大きな問題がいくつかあります。具体的には、境界のチェックなしでメモリにアクセスする機能をインターフェースのクライアントに提供すると、おそらくそれを乱用します。(ハッカーがインターフェイスのクライアントにもなることを忘れないでください...特にJavaで記述されたボクセルエンジンの場合)。したがって、メモリアクセスが悪用されないようにインターフェイスを設計するか、危険なインターフェースと混ざる前に、ユーザーデータを検証するように細心の注意を払う必要があります。ハッカーがチェックされていないメモリアクセスを使用してできる破滅的なことを考えると、おそらく両方のアプローチを取るのが最善です。