Ответ 1
После поиска в Google "проверки границ точек доступа" появляется документ с заголовком "Исправление границ массива для компилятора клиента Java HotSpot ™" (как первый результат) и дает нам некоторое представление:
Аннотация:
Всякий раз, когда к элементу массива обращаются, Виртуальные машины Java выполняют сравните инструкцию, чтобы значение индекса находится в пределах действительного границы. Это уменьшает выполнение скорость Java-программ. Границы массива проверка исключений идентифицирует ситуации, в которых такие проверки избыточным и может быть удален. Мы представить проверку границ массива алгоритм исключения для Java HotSpot ™ VM на основе статического анализа в компиляторе "точно в момент времени".
Алгоритм работает на промежуточном представление в статическом одиночном формы назначения и поддерживает условия для индексных выражений. Это полностью удаляет проверки границ, если это возможно быть доказанным, что они никогда не терпят неудачу. Когда это возможно, он перемещает границы проверяет петли. Статическое число проверок остается неизменным, но проверка внутри цикла, вероятно, будет выполняются чаще. Если такая проверка сбои, программа выполнения падает вернуться к интерпретируемому режиму, избегая проблема в том, что исключение неправильное место.
Оценка показывает скорость, близкую к теоретический максимум для научный набор тестов SciMark (40% в среднем). Алгоритм также улучшает скорость выполнения для Набор тестов SPECjvm98 (2% на средний, максимум 12%).
Марк Майо объяснил это красиво.
Нижняя строка: если Hotspot обнаруживает, что нет необходимости проверять границы для массива, он видит это как возможность отключить проверки границ для этого массива и, следовательно, повысить производительность.