Apa itu Java Heap Space ? Dan Bagimana Cara Mengatasinya ?

0

Kita semua mungkin sudah mengetahui aplikasi java menggunakan memori dalam jumlah yang terbatas. Memori java ini dipisahkan menjadi tumpukan tumpukan yang berbeda. Dan tumpukan inilah yang disebut dengan Heap space dan Permgen .

Tujuan dari pembagian memori ini adalah untuk menjalankan aplikasi secara optimal. Setiap kali kita mendeklarasikan variabel dan objek baru, baik itu memanggil , melakukan operasi yang serupa, mendeklarasikan String,  java akan menunjuk memori ke operasi ini dari Stack Memory atau Heap Space. Pembatasan ini ditentukan selama startup aplikasi berjalan yang bertujuan untuk lebih kompleks.

Penyebab Java Heap Space

Alasan terjadinya java.lang.OutOfMemoryError: Java heap space error ini adalah karena Anda mencoba memasukkan aplikasi XXL ke dalam ruang heap Java berukuran S. Karena aplikasi hanya membutuhkan lebih banyak ruang heap Java daripada yang tersedia untuk beroperasi secara normal.

Penyebab lain untuk pesan OutOfMemoryError ini lebih kompleks dan disebabkan oleh kesalahan pemrograman: Lonjakan dalam penggunaan/volume data.

Aplikasi dirancang untuk menangani sejumlah pengguna atau sejumlah data tertentu. Ketika jumlah pengguna atau volume data tiba-tiba melonjak dan melewati ambang batas yang diharapkan, operasi yang berfungsi normal sebelum lonjakan berhenti beroperasi dan memicu java.lang.OutOfMemoryError: Java heap space error.

Jenis kesalahan pemrograman tertentu akan membuat aplikasi Anda terus-menerus menggunakan lebih banyak memori. Setiap kali fungsionalitas bocor dari aplikasi digunakan, ia meninggalkan beberapa objek ke dalam ruang heap Java. Seiring waktu, objek yang bocor menghabiskan semua ruang heap Java yang tersedia dan memicu java.lang.OutOfMemoryError: kesalahan ruang heap Java yang sudah dikenal.

Fungsi Memori Heap Java

  • Jika ruang tumpukan penuh, Java melempar java.lang.OutOfMemoryError.
  • Akses ke memori ini relatif lebih lambat daripada memori tumpukan Memori ini, berbeda dengan tumpukan, tidak dialokasikan secara otomatis.
  • Dibutuhkan Garbage Collector untuk mengosongkan objek yang tidak terpakai sehingga dapat menjaga efisiensi penggunaan memori.
  • Tidak seperti stack, heap bukanlah threadsafe dan perlu dijaga dengan menyinkronkan kode dengan benar.

Cara Mengatasi Java Heap Space

Dalam beberapa kasus, jumlah heap yang Anda alokasikan ke JVM Anda tidak cukup untuk mengakomodasi kebutuhan aplikasi Anda yang berjalan di JVM tersebut. Dalam hal ini, Anda sebaiknya mengalokasikan lebih banyak tumpukan.

Akan tetapi dalam banyak kasus, dengan menyediakan lebih banyak ruang heap Java belum tentu dapat mengatasi masalah tersebut. Misalnya, jika aplikasi Anda berisi kebocoran memori kemudian Anda menambahkan lebih banyak heap, itu hanya akan menunda java.lang.OutOfMemoryError: Java heap space error.

Selain itu, meningkatkan jumlah ruang heap Java juga cenderung menambah panjang jeda GC yang memengaruhi throughput atau latensi aplikasi Anda.

Jika Anda ingin menyelesaikan masalah mendasar dengan ruang heap Java alih-alih menutupi gejalanya, Anda perlu mencari tahu bagian mana dari kode Anda yang bertanggung jawab untuk mengalokasikan sebagian besar memori. Dengan kata lain, Anda perlu melakukan analisis pada program Anda.

TINGGALKAN KOMENTAR

Silakan masukkan komentar anda!
Silakan masukkan nama Anda di sini