Используйте его для эффективного доступа к большим объемам памяти, например, в вашем собственном воксельном движке! (т.е. игра в стиле Minecraft.)
По моему опыту, JVM часто не может устранить проверку границ там, где она действительно вам нужна. Например, если вы выполняете итерации по большому массиву, но фактический доступ к памяти скрывается за вызовом невиртуального * метода в цикле, JVM может выполнять проверку границ при каждом доступе к массиву, а не один раз перед петля. Таким образом, для потенциально большого прироста производительности вы можете исключить проверку границ JVM внутри цикла с помощью метода, использующего sun.misc.Unsafe для прямого доступа к памяти, обязательно проверяя границы в нужных местах. (Вы находитесь Gonna границы проверить на каком - то уровне, не так ли?)
* не виртуальным, я имею в виду, что JVM не должна динамически разрешать какой бы то ни было ваш конкретный метод, потому что вы правильно гарантировали, что класс / метод / экземпляр - это некоторая комбинация static / final / what-have-you.
Для моего собственного воксельного движка это привело к значительному увеличению производительности во время генерации фрагментов и сериализации (iow места, где я читал / записывал весь массив одновременно). Результаты могут отличаться, но если ваша проблема связана с отсутствием устранения границ, это решит проблему.
В этом есть некоторые потенциально серьезные проблемы: в частности, когда вы предоставляете возможность доступа к памяти без проверки границ клиентам вашего интерфейса, они, вероятно, будут злоупотреблять ею. (Не забывайте, что хакеры также могут быть клиентами вашего интерфейса ... особенно в случае воксельного движка, написанного на Java.) Таким образом, вы должны либо спроектировать свой интерфейс таким образом, чтобы доступ к памяти не мог быть нарушен, либо Вы должны быть чрезвычайно осторожны при проверке пользовательских данных, прежде чем они когда- либо смогут смешаться с вашим опасным интерфейсом. Учитывая катастрофические вещи, которые хакер может сделать с неконтролируемым доступом к памяти, вероятно, лучше всего использовать оба подхода.