Java Virtual Machine (JVM)

1.      Cara Kerja Java Virtual Machine (JVM)
Java dikatakan sebagai Independent Platform yang mampu dijalankan di semua platform OS. Hal ini dikarenakan adanya Java Virtual Machine (JVM) pada RAM yang akan menerjemahkan Java ke dalam bahasa mesin masing-masing dari platform yang akan menjalankan aplikasi tersebut. Adapun cara kerja dari JVM ini adalah :
  • Program Java yang akan dijalankan yang berekstensi *.java akan di-compile oleh Compiler menjadi file dengan ekstensi *.class 
  •  Setelah itu, file *.class tadi akan menuju ke RAM. Di dalam inilah JVM berada. di dalam JVM ini terdapat Class Loader, Byte Code Verifier, Execution Engine dan JIT Code Generator. 
  •  Pertama, file *.class tadi akan di load oleh Class Loader. 
  •  Setelah itu, akan dilanjutkan dengan proses Byte Code Verifier. Pada proses ini, file *.class yang isinya byte akan dibaca oleh Byte Code Verifier. 
  •  Selanjutnya, hasil dari verifikasi tadi akan diubah menjadi file *.exe yang akan bisa dijalankan pada platform yang dituju. 
  •  Di JVM ini, digunakan Just In Time (JIT) Compiler, yaitu compiler yang akan merubah bahasa java menjadi bahasa mesin yang asli yang mampu dibaca di platform OS. 
  •  Setelah itu, file tadi akan bisa dieksekusi langusng oleh platform OS yang dituju.
2.      Perbedaan Heap dan Stack
Heap merupakan area memori yang digunakan untuk alokasi secara dinamis. Ketika program akan diinstal, maka program terlebih dahulu akan memesan alamat memori. Program terlebih dahulu akan melakukan pengecekan terhadap kapasitas memori apakan sesuai atau mencukupi sesuai ukuran data yang diperlukan. Ketika kapasitas memori mencukupi, maka program akan langsung mengalamatkan memori pada lokasi tersebut. Namun, jika kapasitas memori tidak mencukupi, maka program akan membagi-bagi data ke dalam data-data yang kecil dan menyebarnya ke lokasi penyimpanan yang lain. Sehingga data akan tersimpan meskipun terpisah-pisah karena lokasi penyimpanan yang tidak mencukupi. Bagian-bagian memori dialokasikan secara sembarang, yaitu kode-kode dari program yang akan dieksekusi akan disimpan dalam memori penyimpanan namun lokasi penyimpanannya tidak teratur, namun diacak. Sehingga, kode-kode tersebut tidak berada dalam daerah penyimpanan yang sama. Lokasi penyimpanan dari kode-kode ini akan dicheck dan discan untuk mengetahui lokasinya masing-masing saat dijalankan. Sehingga, ketika program tidak dijalankan, maka lokasi-lokasi ini tidak akan diketahui. Heap dipergunakan untuk informasi yang menetap dan dialokasikan secara khusus oleh user. Heap digunakan untuk menyimpan data tambahan sesuai permintaan dari program dan mendapatkan memori tambahan pada saat program dieksekusi. Data yang tidak dialokasikan akan dilokasikan pada saat program dijalankan. Memori  yang dialokasikan pada heap akan tetap bertahan sampai program benar-benar mendealokasikannya.
Stack merupakan bagian yang akan menyimpan data yang telah dikompilasi. Stack ini ditentukan di bagian awal-awal. Di dalam stack, data akan disimpan dengan menggunakan metode Last In First Out (LIFO).  Sebagaimana pengertian dari Stack itu sendiri, yaitu tumpukan, jadi data-data tadi akan disimpan seperti tumpukan yang menggunakan sistem LIFO. Jadi, data yang disimpan paling awal akan digunakan paling akhir. Sebaliknya, data yang disimpan paling akhir akan digunakan sebagai data paling awal untuk digunakan. Dan stack ini digunakan untuk menyimpan memori yang bersifat sementara. Jadi, semisal kita menjalankan tiga aplikasi secara berurutan, maka setelah kita mengeksekusi aplikasi tersebut, data-datanya akan disimpan terlebih dahulu pada stack dan diload satu per-satu. Aplikasi ketiga akan disimpan di bagian paling atas stack dan aplikasi yang paling awal dijalankan akan disimpan di bagian paling bawah stack. Stack lebih digunakan untuk mengalokasikan memori bagi variable-variabel yang digunakan dalam fungsi dan menyimpan data sementara. Karena stack hanya menyimpan memori yang bersifat sementara, maka data yang ada pada stack akan langsung didealokasikan secara otomatis ketika program telah selesai dieksekusi.
3.      Mengubah Ukuran Heap dan Stack
HEAP
Ukuran standar Heap Java adalah 128 MB. Adapun cara meningkatkan ukuran Heap pada Java adalah dengan menggunakan Command Line untuk menjalankannya yaitu dengan mengetikkan kode :
java -Xms –Xmx
Atau menggunakan EDITBIN :
/HEAP:reserve[,commit]
STACK
Untuk Stack, ada beberapa cara mengubah ukurannya tergantung OS yang kita gunakan.
Solaris :
·         limit  = ukuran stack saat ini
·         unlimit = menjadikan ukuran stack tidak terbatas
·         setenv STACKSIZE 32768 = mengubah ukuran stack menjadi 32 MB
Linux :
·         ulimit -a = ukuran stack saat ini
·         ulimit -s 32768 = mengubah ukuran stack menjadi 32 MB
Windows :
·         Pilih Project > Setting
·         Pilih halaman "Link"
·         Pilih Category > Output
·         Pada "Reserve:", isikan jumlah stack yang akan digunakan.
Atau menggunakan EDITBIN :
/STACK:reserve[,commit]


0 comments: