Rumah > Java > javaTutorial > Di manakah Kaedah dan Pembolehubah Statik Java Disimpan dalam Memori?

Di manakah Kaedah dan Pembolehubah Statik Java Disimpan dalam Memori?

Mary-Kate Olsen
Lepaskan: 2024-12-03 16:39:11
asal
942 orang telah melayarinya

Where are Java's Static Methods and Variables Stored in Memory?

Di manakah Kaedah dan Pembolehubah Statik Disimpan dalam Java?

Kaedah dan pembolehubah statik memainkan peranan penting dalam pengaturcaraan berorientasikan objek dengan menyediakan identiti bersama merentas semua keadaan sebuah kelas. Tidak seperti pembolehubah contoh, pembolehubah statik hanya wujud sekali setiap kelas, tanpa mengira bilangan objek yang dicipta. Begitu juga, kaedah statik ialah kaedah peringkat kelas yang boleh diakses terus daripada kelas itu sendiri, tanpa memerlukan contoh kelas untuk dibuat.

Peruntukan Memori

Jadi, di manakah kaedah statik dan pembolehubah yang disimpan dalam Java? Jawapannya terletak pada konsep Generasi Kekal (PermGen) atau MetaSpace. Dalam versi Java yang lebih lama (sebelum Java 8), PermGen ialah sebahagian daripada memori timbunan yang dikhaskan untuk menyimpan metadata berkaitan kelas, termasuk pembolehubah statik dan kod kaedah. Walau bagaimanapun, sejak Java 8, PermGen telah digantikan oleh Metaspace, yang mempunyai tujuan yang sama.

Pembolehubah Statik

Pembolehubah statik hanya disimpan dalam bahagian PermGen atau MetaSpace daripada timbunan itu. Setiap pembolehubah statik menduduki alamat memori tertentu di mana nilainya disimpan.

Kaedah Statik

Kaedah statik disimpan sebagai sebahagian daripada data kelas dalam rantau PermGen atau MetaSpace . Kod kaedah dan metadata yang berkaitan, seperti jenis hujah dan jenis pulangan, disusun menjadi kod bait dan diletakkan dalam kawasan memori khusus ini.

Contoh

Pertimbangkan kod Java berikut:

class A {
    static int i = 0;
    static int j;

    static void method() {
        // static k = 0; // This won't compile
    }
}
Salin selepas log masuk

Dalam contoh ini, pembolehubah statik i dan j akan disimpan dalam kawasan PermGen atau MetaSpace timbunan. Kaedah kaedah statik() juga akan disimpan dalam kawasan memori yang sama sebagai sebahagian daripada metadata kelas.

Implikasi untuk Pengumpulan Sampah

Pembolehubah dan kaedah statik wujud secara berterusan tanpa mengira kitaran hayat individu objek kelas. Mereka tidak layak untuk kutipan sampah melainkan keseluruhan kelas itu sendiri dipunggah daripada ingatan. Ini bermakna mereka berpotensi kekal dalam ingatan selama-lamanya, walaupun kelas itu tidak lagi digunakan oleh mana-mana objek aktif.

Atas ialah kandungan terperinci Di manakah Kaedah dan Pembolehubah Statik Java Disimpan dalam Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan