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.
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.
Pertimbangkan kod Java berikut:
class A { static int i = 0; static int j; static void method() { // static k = 0; // This won't compile } }
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.
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!