Rabu, Maret 06, 2019

JVM Stack Area

JVM menciptakan stack terpisah pada saat thread diciptakan. Penggunaan memori untuk JVM stack tidak dibutuhkan secara berkelanjutan. JVM hanya aktif pada dua operasi secara langsung pada Java Stack, yaitu pada saat push dan pops frame. Stack pada thread tertentu akan dianggap sebagai Runtime Stack. Setiap method memanggil operasinya menggunakan thread tersebut yang disediakan sesuai dengan runtime stack-nya termasuk parameter, variabel lokal, komputasi terdekat, dan data lainnya. Setelah method selesai dijalankan, entry yang cocok akan dihapus. Setelah menyelesaikan semua panggilan method stack akan dikosongkan dan stack yang kosong akan dihancurkan oleh JVM sebelum thread dimatikan. Data yang disediakan pada stack juga tersedia untuk thread yang cocok dan tidak tersedia untuk thread sisa. Oleh karena itu, kita bisa menyebut data lokal sebagai thread safe. Setiap masukkan pada stack disebut dengan stack frame atau activation record (aktivasi penyimpanan) seperti ditunjukkan pada gambar 1.

gambar stack area dari java virtual machine pada bahasa pemrograman java
Gambar 1 JVM stack area
sumber : geekforgeek.org

Struktur Bingkai Stack
Bingkai stack pada dasarnya terdiri dari tiga bagian yaitu: variabel array lokal, stack operand, dan data frame atau bingkai data. Ketika JVM memanggil method Java, yang dilakukan JVM adalah memeriksa data class untuk menentukan jumlah huruf yang dibutuhkan oleh method pada variabel array lokal dan operand stack. JVM menciptakan stack frame dari ukuran yang sesuai untuk memanggil method dan mendorongnya menuju Java stack.

Variabel array local (LVA atau local variables array):
satu, Variabel lokal adalah bagian dari stack frame yang diatur sebagai array berbasis nol dari kata yang digunakan.
dua, LVA mengandung semua parameter dan variabel lokal dari method.
tiga, Setiap slot pada entry array terdiri dari 4 bytes.
empat, Nilai dari tipe data integer, dan yang setara menempati 1 entry atau slot dalam array 4 bytes.
lima, Nilai dari tipe data double dan long menempati 2 entry secara berurutan pada array 8 bytes.
enam, Tipe data byte, short, dan char akan dikonversi ke dalam tipe data integer dan menempati 1 slot ukuran 4 bytes.
tujuh, Tetapi penempatan nilai Boolean adalah bervariasi dari satu JVM ke JVM lain. Tetapi, kebanyakan JVM memberikan 1 slot untuk tipe data Boolean pada variabel array lokal.
delapan, Parameter akan ditempatkan pada variabel array lokal dalam pesanan sesuai dengan permintaan yang dideklarasikan.
sembilan, Contohnya; misal class Example memiliki method bike(), selanjutnya diperlihatkan pada gambar 2 sebagai berikut:

/* Pendeklarasian class */
class Example
{
public void bike(int i, long l, float f, double d, Object o, byte b)
{return 0;}
}

variabel array lokal pada JVM dalam bahasa pemrograman Java
Gambar 2 LVA pada JVM Java
sumber : geekforgeek.org

Operand Stack (OS):
satu, JVM menggunakan operand stack sebagai ruang kerja seperti rough work atau tempat penyimpanan hasil kalkulasi sementara.
dua, Operand stack diatur sebagai array huruf seperti variabel array lokal namun tidak seperti pengaksesan menggunakan indek seperti variabel array lokal, melainkan pengaksesannya menggunakan beberapa instruksi sehingga bisa mendorong nilai menuju operand stack dan beberapa instruksi yang bisa mengeluarkan nilai dari operand stack dan beberapa instruksi lain yang bisa menunjukkan kebutuhan operasi.
tiga, Contohnya; diperlihat beberapa JVM menggunakan kode seperti gambar 3 yang dapat disubstrak kedalam dua variabel lokal yang mengandung dua integer dan menyimpannya pada variabel lokal ketiga.

operand stack java virtual machine pada bahasa pemrograman java
Gambar 3 Operand Stack JVM Java
sumber : geekforgeek.org

empat, Dua instruksi berikut ini lload_0 dan lload_1 akan mendorong nilai dalam operand stack dari variabel lokal untuk pergi dan instruksi isub akan mensubtraksi kedua nilai dan menyimpannya kembali menuju operand stack dan setelah hasil dari istore_2 muncul dari operand stack maka akan tersedia pada variabel array lokal pada posisi 2 seperti diperlihatkan pada gambar 4.

tahap operand stack pada java virtual machine dalam bahasa pemrograman java
Gambar 4 proses operand stack JVM
sumber : geekforgeek.org

Frame Data (FD):
satu, FD mengandung semua refensi simbol dan pengembalian normal method dengan metode tertentu.
dua, FD juga mengandung referensi untuk Exception table yang menyediakan korenpondensi tangkapan informasi blok pada kondisi tertentu.





Related Posts

JVM Stack Area
Oleh

"semoga yang memberikan komentar diberikan berkah kebaikan dari Allah, dijauhkan dari kejahatan, dan diberikan pahala ilmu dan amal jariyah dari sepenggal kata yang ia tinggalkan amiin :) "