Java Stack and Heap: Tutorial Peruntukan Memori Java

Isi kandungan:

Anonim

Apa itu Memori Stack?

Stack in java adalah bahagian memori yang mengandungi kaedah, pemboleh ubah tempatan, dan pemboleh ubah rujukan. Memori tumpukan selalu dirujuk dalam urutan Last-In-First-Out. Pemboleh ubah tempatan dibuat dalam timbunan.

Apa itu Ingatan Tumpukan?

Heap adalah bahagian memori yang mengandungi Objek dan mungkin juga mengandungi pemboleh ubah rujukan. Pemboleh ubah contoh dibuat di timbunan

Peruntukan Memori di Jawa

Peruntukan Memori di Java adalah proses di mana bahagian memori maya disisihkan dalam program untuk menyimpan pemboleh ubah dan keadaan struktur dan kelas. Namun, memori tidak dialokasikan ke objek pada deklarasi tetapi hanya rujukan yang dibuat. Untuk peruntukan memori objek, kaedah baru () digunakan, sehingga objek tersebut selalu dialokasikan memori di timbunan.

Peruntukan Memori Java dibahagikan kepada bahagian berikut:

  1. Timbunan
  2. Timbunan
  3. Kod
  4. Statik

Pembahagian memori ini diperlukan untuk pengurusannya yang berkesan.

  • Bahagian kod mengandungi kod bytec anda .
  • Bahagian Stack memori mengandungi kaedah, pemboleh ubah tempatan, dan pemboleh ubah rujukan.
  • Bahagian Heap mengandungi Objek (mungkin juga mengandungi pemboleh ubah rujukan).
  • Bahagian Statik mengandungi data / kaedah Statik .

Perbezaan antara Pembolehubah Tempatan dan Instance

Pemboleh ubah contoh dinyatakan di dalam kelas tetapi tidak di dalam kaedah

class Student{int num; // num is instance variablepublic void showData{}

Pembolehubah tempatan diisytiharkan dalam satu kaedah termasuk kaedah hujah .

public void sum(int a){int x = int a + 3;// a , x are local variables;}

Perbezaan antara Tumpukan dan Tumpukan


Klik di sini jika video tidak dapat diakses

Mari kita ambil contoh untuk memahami perkara ini dengan lebih baik.

Pertimbangkan bahawa kaedah memanggil kaedah utama anda m1

public void m1{int x=20}

Di java timbunan, bingkai akan dibuat dari kaedah m1.

Pemboleh ubah X dalam m1 juga akan dibuat dalam bingkai untuk m1 dalam timbunan. (Lihat gambar di bawah).

Kaedah m1 ialah kaedah memanggil m2. Di java timbunan, bingkai baru dibuat untuk m2 di atas bingkai m1.

Pemboleh ubah b dan c juga akan dibuat dalam bingkai m2 dalam timbunan.

public void m2(int b){boolean c;}

Kaedah yang sama m2 adalah kaedah memanggil m3. Sekali lagi bingkai m3 dibuat di bahagian atas timbunan (lihat gambar di bawah).

Sekarang katakan kaedah kami m3 adalah membuat objek untuk kelas "Akaun", yang mempunyai dua contoh variabel int p dan int q.

Account {Int p;Int q;}

Berikut adalah kod untuk kaedah m3

public void m3(){Account ref = new Account();// more code}

Penyata Akaun baru () akan membuat objek akaun dalam timbunan.

Pemboleh ubah rujukan "ref" akan dibuat dalam stack java.

Pengendali operator akan membuat pemboleh ubah rujukan untuk menunjuk ke objek di Heap.

Setelah kaedah selesai pelaksanaannya. Aliran kawalan akan kembali ke kaedah panggilan. Yang dalam kes ini adalah kaedah m2.

Tumpukan dari kaedah m3 akan dikeluarkan.

Oleh kerana pemboleh ubah rujukan tidak lagi menunjuk ke objek di timbunan, ia layak untuk pengumpulan sampah.

Setelah kaedah m2 telah selesai pelaksanaannya. Ia akan keluar dari timbunan, dan semua pemboleh ubahnya akan dihapus dan tidak lagi tersedia untuk digunakan.

Begitu juga untuk kaedah m1.

Akhirnya, aliran kawalan akan kembali ke titik permulaan program. Yang biasanya, adalah kaedah "utama".

Bagaimana jika Objek mempunyai rujukan sebagai pemboleh ubah contohnya?

public static void main(String args[]) {A parent = new A(); //more code } class A{ B child = new B(); int e; //more code } class B{ int c; int d; //more code }

Dalam kes ini, pemboleh ubah rujukan "anak" akan dibuat dalam timbunan, yang pada gilirannya akan menunjuk ke objeknya, seperti rajah yang ditunjukkan di bawah.

Ringkasan:

  • Apabila kaedah dipanggil, bingkai dibuat di bahagian atas timbunan.
  • Setelah kaedah selesai dijalankan, aliran kawalan kembali ke kaedah panggilan dan bingkai timbunannya yang sesuai akan dihapus.
  • Pemboleh ubah tempatan dibuat dalam timbunan
  • Pemboleh ubah contoh dibuat di timbunan & merupakan sebahagian daripada objek yang menjadi miliknya.
  • Pemboleh ubah rujukan dibuat dalam timbunan.