Örnek alanları (özellik destek alanları dahil), N nesneleri için N kopya alır.
Statik alanlar sınıf başına tek bir kopya alır.
Yöntemler, programın "görüntüsü" veya yürütülebilir kod segmentinin parçası olan bayt kodu bloklarıdır (veya JIT'den sonra, yerel talimat bloklarıdır). Yöntemler, diskte bulunduğu için program görüntüsünün bir parçasıdır. Görüntü OS (veya CLR) tarafından yüklendikten sonra, yöntem kodunun tek bir paylaşılan kopyası vardır.
Bunlar, hostable derleyicisini anında yeni yöntemler derlemek için kullanabileceğiniz durumlar dışında, "yığın" veya genel olarak çalışma zamanı tahsisinin bir parçası değildir. Yöntemler nesneler gibi "tahsis edilmez" ve nesne oluşturmaya göre "tahsis edilmez". Tek bir nesne somutlaştırılmadan önce sadece programın bir parçası olarak var olurlar. Lamdalar / delegeler bile anında tahsis edilmiyor. Derleyici, bu diğer dinamik kod nesnelerini uygulamak için isteğe bağlı sınıflar oluşturur ve bunlar diskteki bayt kodu görüntüsünün bir parçası olarak da bulunur.
Yorum başına GÜNCELLEME:
JVM standardı şunları söylemektedir:
2.5.4. Yöntem Alanı
Java Sanal Makinesi'nin tüm Java Sanal Makinesi iş parçacıkları arasında paylaşılan bir yöntem alanı vardır. Yöntem alanı, geleneksel bir dilin derlenmiş kodu için depolama alanına benzer veya bir işletim sistemi işlemindeki "metin" segmentine benzer. Çalışma zamanı sabit havuzu, alan ve yöntem verileri gibi sınıf başına yapıları ve sınıf ve örnek başlatma ve arabirim başlatmada kullanılan özel yöntemler (§2.9) dahil olmak üzere yöntem ve kurucular için kodu saklar.
Yöntem alanı sanal makine başlangıcında oluşturulur. Yöntem alanı mantıksal olarak yığının bir parçası olmasına rağmen, basit uygulamalar çöp toplamayı veya sıkıştırmamayı seçebilir. Java Sanal Makine belirtiminin bu sürümü, yöntem alanının konumunu veya derlenmiş kodu yönetmek için kullanılan ilkeleri zorunlu kılmaz. Yöntem alanı sabit bir boyutta olabilir veya hesaplama gereği olarak genişletilebilir ve daha büyük bir yöntem alanı gereksiz hale gelirse daralabilir. Yöntem alanı için belleğin bitişik olması gerekmez.
Bu nedenle (1) evet spesifikasyonun bunun nasıl yapıldığını dikte etmediği açıktır, ancak (2) geleneksel bir dilin derlenmiş kodu için depolama alanına benzerdir, yani. metin segmenti. Yaptığım nokta bu.