Да на первый вопрос и нет на второй; это виртуальная машина. Ваши проблемы, вероятно, связаны с неуказанными изменениями в реализации библиотеки между версиями. Хотя это может быть, скажем, состояние гонки.
Есть некоторые препятствия, через которые должна пройти виртуальная машина. В частности, ссылки обрабатываются в файлах классов, как если бы они занимали то же место int
в стеке, что и s. double
и long
занять два отсека для ссылок. Например, поля, виртуальная машина обычно подвергает некоторой перестановке. Все это делается (относительно) прозрачно.
Также некоторые 64-битные JVM используют "сжатые упс". Поскольку данные выравниваются примерно через каждые 8 или 16 байтов, три или четыре бита адреса бесполезны (хотя для некоторых алгоритмов может быть украден бит «метки»). Это позволяет 32-битным адресным данным (таким образом, используя половину полосы пропускания и, следовательно, быстрее) использовать размер кучи 35 или 36 бит на 64-битной платформе.