Mengenal Java Heap Space dan Cara Mengatasinya - ilmuti.org · Misalnya maximum heap space dan...

8
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Mengenal Java Heap Space dan Cara Mengatasinya Abdul Mukti [email protected] :: http://mukti666.wordpress.com Abstrak JAVA HEAP SPACE adalah masalah kekurangan memory pada program atau project yang saat kita buat dalam bahasa pemograman java. Hal ini kerap kali terjadi ketika dimana project yang kita buat telah memenuhi kapasitas ruang memory yang di miliki oleh Java Heap Space. Untuk seorang java programmer, pengetahuan akan Java Heap, menetapkan berapa ukuran java heap, berurusan dengan error heap space OutOfMemoryError, menganalisis heap dump itu sangat penting. Masalah ini bisa kita atasi dengan menambah kapasitas memory pada Java Heap Space. Didalam artikel ini akan di jelaskan lebih rinci lagi tentang cara mengatasi Java Heap Space. Kata Kunci : Pengenalan java heap space, ukuran heap space dan cara mengatasi heap space Pendahuluan Untuk kesempatan kali ini saya akan membahas masalah mengenai java heap space. Tentunya bagi kalian para programmer baik pemula atau yang sudah mahir tentu pernah mengalami masalah ini java.lang.OutOfMemoryError. masalah ini terjadi karena adanya kelebihan kapasitas memory yang terjadi pada ruang java heap space. Untuk itu mari kita mengenal java heav space dan mengetahui bagaimana cara mengatasinya.

Transcript of Mengenal Java Heap Space dan Cara Mengatasinya - ilmuti.org · Misalnya maximum heap space dan...

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

Mengenal Java Heap Space dan Cara Mengatasinya

Abdul Mukti [email protected] :: http://mukti666.wordpress.com

Abstrak JAVA HEAP SPACE adalah masalah kekurangan memory pada program atau project

yang saat kita buat dalam bahasa pemograman java. Hal ini kerap kali terjadi ketika

dimana project yang kita buat telah memenuhi kapasitas ruang memory yang di miliki

oleh Java Heap Space. Untuk seorang java programmer, pengetahuan akan Java Heap,

menetapkan berapa ukuran java heap, berurusan dengan error heap space

OutOfMemoryError, menganalisis heap dump itu sangat penting. Masalah ini bisa kita

atasi dengan menambah kapasitas memory pada Java Heap Space. Didalam artikel ini

akan di jelaskan lebih rinci lagi tentang cara mengatasi Java Heap Space.

Kata Kunci : Pengenalan java heap space, ukuran heap space dan cara mengatasi heap

space

Pendahuluan Untuk kesempatan kali ini saya akan membahas masalah mengenai java heap

space. Tentunya bagi kalian para programmer baik pemula atau yang sudah mahir tentu

pernah mengalami masalah ini java.lang.OutOfMemoryError. masalah ini terjadi karena

adanya kelebihan kapasitas memory yang terjadi pada ruang java heap space. Untuk itu

mari kita mengenal java heav space dan mengetahui bagaimana cara mengatasinya.

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

Pembahasan A. Apa itu java heap space ???

Ketika sebuah program Java dimulai, Java Virtual Machine mendapatkan

sejumlah memori dari Sistem Operasi. Java Virtual Machine atau disingkat JVM

menggunakan memori ini untuk semua kebutuhan. Sebagian dari memori ini disebut

memori java heap. Heap di dalam java umumnya terletak ruang alamat paling bawah

dan kemudian menaik keatas. Setiap kali kita membuat objek menggunakan operator

baru atau dengan yang lain, berarti sebuah object dialokasikan dari memori Heap dan

Ketika object tersebut telah mati dan dikumpulkan oleh Garbage collector, maka

sejumlah memori ini dikembalikan ke heap space .

B. Ukuran java heap space

Ukuran standar heap space di java umumnya adalah 128Mb pada sebagian besar

JVM Sun 32 bit, namun bisa sangat bervariasi dari satu jenis JVM ke JVM lain.

Misalnya maximum heap space dan initial heap untuk Sistem Operasi 32-bit Solaris

(Platform SPARC Edition) adalah -Xms = 3670K dan -Xmx = 64M dan nilai-nilai

default dari parameter heap space pada system 64-bit telah meningkat sekitar 30%.

Juga jika anda menggunakan garbage collector pada java 1.5 ukuran maximum heap

space JVM adalah Memori Fisik / 4 dan ukuran initial heap space adalah sama dengan

ukuran Memori fisik /16. Cara lain untuk mendapatkan heap space default pada JVM

adalah dengan menjalankan aplikasi menggunakan parameter heap default dan

memonitor dengan menggunakan JConsole yang tersedia di JDK 1,5 ke atas, pada tab

VMSummary kita akan dapat melihat ukuran maximum heap.

Mulai Java 6 update 18 terdapat perubahan yang signifikan dalam bagaimana

JVM menghitung ukuran standar tumpukan dalam mesin 32 dan 64 bit dan pada klien

dan server modus JVM yakni :

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

1) Initial Heap Space dan maximum heap space berukuran menjadi lebih

besar untuk meningkatkan kinerja.

2) maximum heap space secara default berukuran 1/2 dari memori fisik

yang berukuran hingga 192 byte dan 1/4 dari memori fisik yang

berukuran hingga 1GB. Jadi untuk mesin 1 GB, heap space maksimum

adalah 256MB. Ukuran maximum heap space tidak akan digunakan

hingga program java yang kita buat menciptakan objek yang cukup untuk

mengisi initial heap space yang akan jauh lebih rendah setidaknya 8-MB

atau 1/64 bagian dari ukuran memori fisik 1GB.

3) untuk Server JVM standar, maximum heap space adalah 1GB untuk

memori fisik sebesar 4GB JVM 32-bit. Sedangkan untuk JVM 64 bit,

adalah 32GB untuk memori fisik berukuran 128GB.

C. Meningkatakan Heap Space Pada Eclipse

Dengan cara Anda dapat meningkatkan ukuran java heap space berdasarkan

kebutuhan aplikasi Anda dan saya selalu merekomendasikan hal ini untuk menghindari

menggunakan nilai heap JVM default. jika aplikasi Anda besar dan banyak objek

dibuat, Anda dapat mengubah ukuran ruang tumpukan dengan menggunakan JVM

pilihan-Xms dan-Xmx. Xms menunjukkan ukuran mulai dari Heap sementara-Xmx

menunjukkan ukuran maksimum Heap di java. Ada lagi parameter yang disebut-Xmn

yang menunjukkan ukuran dari pembangkitan baru java heap space. Hanya hal yang

Anda tidak dapat ubah adalah ukuran Heap di Java secara dinamis, Anda hanya dapat

memberikan parameter ukuran Java Heap saat memulai JVM.

1) Mengubah File .ini di Eclipse: File .ini dapat ditemukan di folder yang sama

dengan file eksekusi Eclipse. Kemudian kita akan melihat beberapa pilihan

seperti ini.:

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

-showsplash

org.eclipse.platform

--launcher.XXMaxPermSiz 256m

-vmargs

-Xms40m

-Xmx256m

Tampilan tersebut diatas menunjukkanminimum heap space (-Xms40m) yang

diatur ke 40MB dan maximum heap space (-Xmx256m) diatur pada nilai 256MB.

Mengubah 256M menjadi nilai yang lebih besar, misalnya 512M akan meningkatkan

pasokan heap space pada Eclipse. Ketika saya membuka file .ini tersebut, secara aktual

saya menunjukkan maximum heap space yang lebih besar daripada apa yang

ditunjukkan dalam program saya.

Catatan: untuk memeriksa maximum heap space yang tersedia di Java kita bisa

menggunakan baris kode tersebut dalam java:

System.out.println(java.lang.Runtime.getRuntime().maxMemory());

Eclipse sebenarnya tidak membatasi heap space saya karena file .Ini yang saya

buka barusan menunjukkan nilai maksimal 512MB sementara program saya hanya

melaporkan 128MB. Jika ini terjadi, maka kita bisa mencoba cara kedua.

2) Memasukkan argumen VM ke JRE kita: ketika Eclipse terbuka, buka

Preferences (pada menu Window di Eclipse), kemudian pilih Section Java,

klik Installed JREs , klik pada JRE yang digunakan (contoh jre6), klik pada

button Edit, dan masukkan sintaks berikut ke dalam default VM Arguments:

-Xms256M -Xmx512M

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

Format ini mirip dengan apa yang ada dalam file .ini dimana Xms adalah

minimum heap space dan Xmx adalah maximum heap space. Masalahnya adalah bahwa

JVM membatasi jumlah memori yang tersedia di heap sehingga argumen harus

diteruskan ke VM untuk mengubahnya. Perintah-perintah ini dapat dilakukan melalui

command line:

eclipse [normal arguments] -vmargs -Xmx256M [more VM args]

Selain dengan cara di atas kita pun bias menggunakan cara di bawah ini untuk

mengatasi java heap space yang terjadi.

Oke, pertama kita Pilih menu RUN -- SET PROJECT CONFIGURATION --

CUSTOMIZE.

Gambar 1.1

Trus nongol deh PROPERTIES dari project yg saya bikin atau pun dari project

kalian. Trus isikan -Xmx512m di kotak isian VM OPTION. Yang artinya memory

maksimum yg dialokasikan untuk running program java adalah 512MB. Setelah itu

udah deh... Akhirnya program saya berjalan dengan lancar dan heap space gak pernah

nongol lagi deh. hehe Alhamdulillah yah !

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

Gambar 1.2

D. Mengatasi java.lang.OutOfMemoryError: PermGen space

Jika kalian menggunakan tomcat sebagai application servernya, pernahkan

kalian mendapatkan error seperti ini :

java.lang.OutOfMemoryError: PermGen space

Error tersebut muncul karena tomcat kekurangan memory untuk menjalankan

prosesnya. Untuk mengatasinya kita bisa mengubah file konfigurasinya untuk

menaikkan memorynya.

Caranya pertama masuklah ke direktori tempat kalian menginstall tomcat. Lalu

masuk ke dalam folder bin. Di komputer saya lokasinya ada di : C:\Program

Files\Apache Software Foundation\Apache Tomcat 7.0.27\bin.

Lalu lakukan langkah-langkah berikut ini :

• Cari file catalina.bat, lalu bukalah dengan notepad kalian.

• Cari tulisan ini : rem Guess CATALINA_HOME if not defined

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

• Tepat di bawahnya, tambahkan script berikut :

set CATALINA_OPTS = -Xms512M -Xmx512M -Xmn128M -

XX:+UseParallelOldGC -Xss128K -XX:PermSize=512M

• Restart tomcat kalian

Sekarang cobalah tomcat anda kembali dan lihat perkembangannya.

Penutup Demikanlah artikel yang saya buat dalam kesempatan kali ini. Semoga artikel ini

sangat bermanfaat bagi kalian semua yang sangat berminat belajar bahasa pemograman

teruma bahasa java. Apabila dalam penyampaian artikel ini terdapat kata-kata yang

kurang di mengerti oleh kalian. Cobalah searching kembali kata-kata itu di situs google

agar bagi kalian para pemula dapat memahi arti kata tersebut. Karena ada pepatah

mengatakan kalo tak kenal maka tak sayang. Begitulah bunyi dari pepatah itu. Yaudah

sekain dulu dari saya. Sukses selalu buat kalian semuanya sampai bertemu di tulisan-

tulisan artikel lainnya yah :D

Referensi http://java.ruangtedy.net/?p=394

http://i-bakhtiar.blogspot.com/2011/10/java-heap-space.html

https://maniakjava.wordpress.com/2013/12/19/cara-mengatasi-java-lang-

outofmemoryerror-permgen-space/#more-573

http://fridayanabaabullah.wordpress.com/2010/09/02/penjelasan-java-lang-

outofmemoryerror-permgen-space/

http://dwikasudrajat.blogspot.com/2011/06/java-heap-space.html

Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

Biografi Abdul Mukti, lahir di Tangerang 7 Maret 1993. Menyelesaikan

Sekolah Dasar dan Sekolah Menengah Pertama di SDN Bencongan 6

Tangerang dan SMP PGRI 400 Kota Tangerang. Menamatkan SMK

di SMK Nusa Putra Kota Tangerang Jurusan Teknologi Jaringan dan

Komputer (TKJ) pada tahun 2011. Sekarang sedang melanjutkan

Pendidikan S1 di STMIK Raharja Kota Tangerang Jurusan Teknik Informatika

Konsentrasi di Software Engineering. Saya senang dengan hal-hal yang bersangkutan

dengan merakit komputer dan jaringan. Saat ini sedang memperdalam ilmu

pemograman java dan android.