Peruntukan memori dalam java boleh ditakrifkan sebagai proses memperuntukkan storan kepada program atau perkhidmatan java. Peruntukan memori dalam java dilakukan dalam memori JVM (Java Virtual Machine), secara amnya dibahagikan kepada memori timbunan dan bukan timbunan. Artikel ini akan memperincikan cara ingatan timbunan dan ingatan tindanan, bersamaan dengan ingatan bukan timbunan, diperuntukkan kepada atur cara Java.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokSeperti yang kita ketahui, java ialah bahasa berorientasikan objek; oleh itu, semua objek yang dibuat dalam java disimpan dalam JVM (mesin maya Java). Memori JVM dibahagikan kepada bahagian berikut:
Waktu jalan java menggunakan Heap Memory untuk memperuntukkan memori kepada objek dan kelas semasa melaksanakan program java. Setiap kali objek dibuat dalam java, ia akan disimpan dalam memori timbunan. Di samping itu, proses pengumpulan sampah dijalankan pada memori timbunan untuk membebaskan ruang yang tidak diperlukan; kutipan sampah mengalih keluar objek tersebut daripada kawasan timbunan yang tidak mempunyai sebarang rujukan. Heap memory dalam java dibahagikan kepada bahagian berikut:
Berikut adalah beberapa perkara penting mengenai ingatan timbunan java:
Seperti namanya, ingatan tindanan adalah berdasarkan prinsip LIFO (masuk terakhir, keluar dahulu). Memori tindanan digunakan untuk peruntukan memori statik, dan setiap utas pelaksana dalam program java mempunyai memori tindanannya. Setiap kali kaedah Java dipanggil, blok baharu dicipta dalam memori tindanan java untuk memegang pembolehubah tempatan atau perantaraan dan rujukan kepada objek lain dalam kaedah tersebut. Sebaik sahaja pelaksanaan kaedah selesai, blok memori dalam timbunan menjadi kosong dan digunakan oleh kaedah seterusnya. Oleh itu, saiz memori Stack adalah kurang daripada memori timbunan. Berikut ialah beberapa ciri penting memori tindanan.
Berikut ialah perbandingan kecil ingatan tindanan dan timbunan dalam java:
Heap Memory | Stack Memory |
The entire application uses heap memory during its runtime. | The application in parts uses stack memory. That means it is used one at a time during thread execution. |
Heap memory is larger than stack memory. | Stack memory is small as compared to heap memory. |
All objects created during the application are stored in heap memory. | Stack memory only stores local variables and references to objects. |
Access to heap memory is slow. | Access to stack memory is fast as compared to heap memory. |
Heap memory is allocated by creating new objects and gets deallocated by a garbage collector. | Stack memory is automatically allocated and deallocated with the end in method execution. |
Heap memory stays as long as the application is running. | Stack memory stays only until a method is executing. |
Sekarang kita akan melihat contoh java yang menunjukkan bagaimana memori diperuntukkan
Kod:
package com.edubca.javademo; class StudentData{ int rollNumber; String name; public StudentData(int rollNumber, String name) { super(); this.rollNumber = rollNumber; this.name = name; } public int getRollNumber() { return rollNumber; } public void setRollNumber(int rollNumber) { this.rollNumber = rollNumber; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Main { public static void main(String[] args) { int id = 11; String name = "Yash"; StudentData s = null; s = new StudentData(id, name); System.out.println("Student Id is " + s.getRollNumber()); System.out.println("Student Name is " + s.getName()); } }
Output:
Sekarang kita akan melihat bagaimana memori diperuntukkan dalam program di atas:
1. Dalam kelas Utama, selepas memasukkan kaedah utama, kerana id, namanya ialah pembolehubah tempatan, ruang dalam memori tindanan dibuat dengan cara berikut:
2. Panggilan ke pembina kelas StudentData akan ditambahkan ke bahagian atas memori tindanan. Akibatnya, perkara berikut akan disimpan:
3. Dua pembolehubah contoh yang diisytiharkan dalam kelas StudentData akan disimpan dalam ingatan timbunan.
Atas ialah kandungan terperinci Peruntukan Memori dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!