Ya untuk pertanyaan pertama dan tidak untuk pertanyaan kedua; itu mesin virtual. Masalah Anda mungkin terkait dengan perubahan yang tidak ditentukan dalam implementasi pustaka antar versi. Meskipun bisa dikatakan, kondisi balapan.
Ada beberapa rintangan yang harus dilalui VM. Terutama referensi diperlakukan dalam file kelas seolah-olah mereka mengambil ruang yang sama seperti int
s di tumpukan. double
dan long
menggunakan dua slot referensi. Misalnya bidang, ada beberapa pengaturan ulang yang biasanya dilakukan VM. Ini semua dilakukan (secara relatif) secara transparan.
Juga beberapa JVM 64-bit menggunakan "oops terkompresi". Karena data diselaraskan dengan sekitar setiap 8 atau 16 byte, tiga atau empat bit alamat tidak berguna (meskipun bit "tanda" mungkin dicuri untuk beberapa algoritme). Hal ini memungkinkan data alamat 32-bit (oleh karena itu menggunakan setengah bandwidth, dan karena itu lebih cepat) untuk menggunakan ukuran heap 35- atau 36-bit pada platform 64-bit.