Как массивы представлены в jvm, как она находит элемент по индексу массива, например где-нибудь в середине. Она же, получается, всё равно проходит по всем элементам массива и находит нужный, или какой-то другой механизм? Если такой, то какая разница для jvm - массив это или связный список, почему операция нахождения элемента в середине массива быстрее ?
Массивы в JVM вполне настоящие, то есть занимают непрерывное пространство в памяти как на C/C++, то есть реализованы НЕ на списках.
Операция доступа к элементу массива имеет сложность O(1), а JIT оптимизирует ее до одной машинной инструкции (на x86), то есть так же как доступ к локальной переменной на стеке или полю класса.
Отдельный элемент массива - не то же самое, что отдельная переменная или поле класса, память, которую он занимает не будет освобождена до тех пор, пока не будет освобожден весь массив.