Apakah Peruntukan Memori di Jawa? Memori Tumpukan dan Tumpukan



Artikel ini berdasarkan 'Memory Allocation in Java' akan membantu anda dengan pengetahuan terperinci mengenai peruntukan Memory bersama dengan struktur data Stack dan Heap.

Peruntukan memori adalah proses di mana program dan perkhidmatan komputer diberikan secara fizikal atau maya ingatan ruang. Dalam artikel ini, kita akan belajar mengenai peruntukan memori di dan kita akan membincangkan Stack and Heap Memory.

Apa itu Memori Stack?

Memori Java Stack digunakan untuk pelaksanaan utas. Mereka mengandungi nilai khusus kaedah yang berumur pendek dan merujuk kepada objek lain di timbunan yang dirujuk dari kaedah tersebut.





bahagian peta bergabung dalam sarang

Timbunan ingatan selalu dirujuk dalam LIFO (Last-In-First-Out) pesanan. Setiap kali kaedah dipanggil, blok baru dibuat dalam memori timbunan untuk kaedah tersebut untuk menyimpan nilai primitif tempatan dan merujuk pada objek lain dalam kaedah tersebut.

Sebaik sahaja kaedah berakhir, blok menjadi tidak digunakan dan tersedia untuk kaedah seterusnya.



Ukuran memori timbunan sangat kurang berbanding dengan memori Heap.

Ciri-ciri Utama Stack Memory

Selain daripada apa yang telah kita bincangkan setakat ini, berikut adalah beberapa ciri lain dari Timbunan ingatan:

  • Ia tumbuh dan menyusut apabila kaedah baru dipanggil dan dikembalikan masing-masing
  • Pemboleh ubah di dalam timbunan hanya ada selagi kaedah yang membuatnya dapat dijalankan
  • Ia secara automatik diperuntukkan dan dialokasikan semasa kaedah menyelesaikan pelaksanaan
  • Sekiranya memori ini penuh, Java akan membuang ralat java.lang.StackOverFlowError
  • Akses ke memori ini adalah pantas jika dibandingkan dengan memori timbunan
  • Ingatan ini adalah benang-selamat kerana setiap utas beroperasi dalam timbunannya sendiri

Kaedah dalam kelas Stack

  • Tolak objek ( Unsur objek ): Menolak elemen di bahagian atas timbunan.
  • Pop objek (): Menanggalkan dan mengembalikan elemen timbunan teratas. Seorang ‘EmptyStackException’ pengecualian dilemparkan jika kita memanggil pop () ketika stack pemanggil kosong.
  • Mengintip objek (): Mengembalikan elemen di bahagian atas timbunan, tetapi tidak mengeluarkannya.
  • Boolean kosong (): Ia kembali benar jika tiada apa yang ada di bahagian atas timbunan. Lain, kembali palsu.
  • carian int ( Unsur objek ): Ini menentukan sama ada objek wujud dalam timbunan. Sekiranya elemen dijumpai, ia mengembalikan kedudukan elemen dari bahagian atas timbunan. Lain, ia kembali -1.

Kod Java untuk pelaksanaan stack

import java.io. * import java.util. * Uji kelas {static void stack_push (Stack stack) {untuk (int i = 0 i<5 i++){ stack.push(i) } } static void stack_pop(Stack stack){ System.out.println('Pop :') for(int i = 0 i < 5 i++){ Integer y = (Integer) stack.pop() System.out.println(y) } } static void stack_peek(Stack stack){ Integer element = (Integer) stack.peek() System.out.println('Element on stack top : ' + element) } static void stack_search(Stack stack, int element){ Integer pos = (Integer) stack.search(element) if(pos == -1) System.out.println('Element not found') else System.out.println('Element is found at position ' + pos) } public static void main (String[] args){ Stack stack = new Stack() stack_push(stack) stack_pop(stack) stack_push(stack) stack_peek(stack) stack_search(stack, 2) stack_search(stack, 6) } } 

//Pengeluaran



apa itu kacang di jawa

memory-allocation-in-java

Sekarang, Mari kita bergerak ke Heap Space.

Ruang Tumpukan di Jawa

Memori dialokasikan semasa pelaksanaan arahan yang ditulis oleh pengaturcara. Perhatikan bahawa timbunan nama tidak ada kaitan dengan struktur data timbunan. Ia disebut timbunan kerana ia adalah tumpukan ruang memori yang tersedia untuk pengaturcara diperuntukkan dan nyah-peruntukkan. Sekiranya pengaturcara tidak mengendalikan memori ini dengan baik, kebocoran memori boleh berlakuberlaku dalam program.

Ciri-ciri Utama Memori Heap Java

  • Selain daripada apa yang telah kita bincangkan sejauh ini, berikut adalah beberapa ciri ruang timbunan lain:
  • Ia diakses melalui teknik pengurusan memori yang kompleks yang merangkumi Generasi Muda, Tua atau Generasi Bertenaga, dan Penjanaan Kekal
  • Sekiranya ruang timbunan penuh, Java melempar ralat java.lang.OutOfMemoryError
  • Akses ke memori ini lebih perlahan daripada memori timbunan
  • Memori ini, berbeza dengan timbunan, tidak disahpindah secara automatik. Ia memerlukan Pengutip Sampah untuk membebaskan objek yang tidak digunakan sehingga dapat mengekalkan kecekapan penggunaan memori
  • Tidak seperti timbunan, timbunan tidak benang-selamat dan perlu dijaga dengan menyegerakkan kod dengan betul

Perbezaan antara Java Heap Space dan Stack Memory

Berdasarkan penjelasan di atas, kita dapat dengan mudah menyimpulkan perbezaan berikut antara Timbunan dan Timbunan ingatan.

  • Timbunan memori digunakan oleh semua bahagian aplikasi sedangkan memori timbunan hanya digunakan oleh satu utas pelaksanaan.
  • Setiap kali objek dibuat, objek itu selalu disimpan di ruang Heap dan memori timbunan mengandungi rujukan kepadanya. Memori tumpukan hanya mengandungi pemboleh ubah primitif tempatan dan pemboleh ubah rujukan ke objek di ruang timbunan.
  • Objek yang disimpan di timbunan dapat diakses secara global sedangkan memori timbunan tidak dapat diakses oleh utas lain.
  • Pengurusan memori dalam timbunan dilakukan dalam a LIFO cara sedangkan memori Heap lebih kompleks kerana ia digunakan secara global. Memori timbunan terbahagi kepada Generasi Muda, Generasi Lama dan lain-lain, maklumat lebih lanjut di Java Garbage Collection.
  • Memori tumpukan adalah berumur pendek sedangkan memori timbunan hidup dari awal hingga akhir pelaksanaan aplikasi.
  • Kita boleh guna -XMX dan -XMS Pilihan JVM untuk menentukan ukuran permulaan dan ukuran maksimum memori timbunan. Kita boleh guna -XSS untuk menentukan ukuran memori timbunan.
  • Apabila memori timbunan penuh, runtime Java melempar ralat java.lang.StackOverFlowError sedangkan jika memori timbunan penuh, ia membuang ralat java.lang.OutOfMemory: Ruang Tumpukan Jawakesilapan.
  • Ukuran memori timbunan sangat kurang jika dibandingkan dengan memori Tumpukan. Kerana kesederhanaan dalam peruntukan memori (LIFO), memori timbunan sangat pantas jika dibandingkan denganmemori timbunan.

Carta Perbandingan

PARAMETER TIMBUNAN HEBAT
Asas Memori diperuntukkan dalam Blok BersebelahanMemori diperuntukkan dalam Random Order
Peruntukan dan Pembuangan Semula Automatik oleh penyusunManual oleh Pengaturcara
Kos KurangLebih banyak lagi
Pelaksanaan KerasMudah
Masa akses Lebih pantasLebih perlahan
Isu utama Kekurangan MemoriPecahan Ingatan
Lokasi Perbezaan CemerlangMemadai
Kelenturan Kadar tetapSaiz semula mungkin

Dengan ini, kita mengakhiri Tutorial 'Peruntukan Memori di Jawa' ini. Saya harap anda telah memahami konsep dan pelaksanaannya melalui beberapa contoh masa nyata.

Sekarang anda sudah fahamPeruntukan Memori di Jawaasas-asas melalui artikel 'Peruntukan Memori di Jawa' ini oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi anda permulaan dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Musim bunga .

Ada soalan untuk kami? Sebutkannya di bahagian komen di blog 'Peruntukan Memori di Java' ini dan kami akan menghubungi anda secepat mungkin.