Використовуйте його для ефективного доступу та розподілення великої кількості пам’яті, наприклад, у власному двигуні вокселів! (тобто гра в стилі Minecraft.)
На мій досвід, JVM часто не в змозі усунути перевірку меж там, де вам це справді потрібно. Наприклад, якщо ви здійснюєте ітерацію над великим масивом, але фактичний доступ до пам'яті знаходиться під викликом невіртуального методу * у циклі, JVM все ще може перевірити межі з кожним доступом до масиву, а не один раз перед цим петля. Таким чином, для потенційно великого підвищення продуктивності ви можете усунути перевірку меж JVM всередині циклу за допомогою методу, який використовує sun.misc.Unsafe для доступу безпосередньо до пам'яті, переконуючись, що будь-які межі перевіряють себе в потрібних місцях. (Ти є перевірити межі на якомусь рівні, правда?)
* під невіртуальним, я маю на увазі, що JVM не повинен динамічно вирішувати будь-який конкретний метод, тому що ви правильно гарантували, що клас / метод / екземпляр є деякою комбінацією статичного / кінцевого / того, що у вас є.
Для мого домашнього воксельного двигуна це призвело до значного підвищення продуктивності під час генерації шматка та серіалізації (там, де я читав / записував до всього масиву відразу). Результати можуть відрізнятися, але якщо проблема з усуненням меж є вашою проблемою, то це виправить.
З цим є деякі потенційно серйозні проблеми: конкретно, коли ви надаєте можливість доступу до пам'яті без перевірки меж для клієнтів вашого інтерфейсу, вони, ймовірно, зловживають нею. (Не забувайте, що хакери також можуть бути клієнтами вашого інтерфейсу ... особливо у випадку з воксельним механізмом, написаним на Java.) Таким чином, вам слід або спроектувати свій інтерфейс таким чином, щоб не вдалося зловживати доступом до пам'яті, або ви повинні бути дуже обережні , щоб перевірити призначені для користувача дані , перш ніж він може коли - небудь, коли - або змішатися з небезпечним інтерфейсом. З огляду на катастрофічні речі, які хакер може зробити при неперевіреному доступі до пам'яті, можливо, краще скористатися обома підходами.