SORU
30 Mayıs 2014, Cuma


Ne'boyutu maliyetinin Java miras s?

Orada çeşitli makaleler ampirik tahmin etmek için java.lang.Object özellikle JVM uygulamaları yükü deneyin terimini vardır. Örneğin, boyutu biraz Jvm'ler içindeObject estimated at 8 bytes çıplak havai gördüm.

Bilmek istediğim extends ilişkinin tipik JVM bir uygulama yükü artan boyutu sınıf hiyerarşisinin her düzeyinde tanıttı olsun. Diğer bir deyişle, ALT N düzeyleri ile sınıf bir hiyerarşi var sanırım. Bellek içi gösterimini sınıf bir örnek O(1) veya O(N) yükü?

Ben hayal O(1) çünkü, ancak bu boyutu bazı gizli tüylü şeylere ihtiyacın var olmak için bir Java Object (taban, zincir sınıflar) büyüdükçe miras hiyerarşisi büyür, büyür her sınıf, her örneği, JVM uygulama saklayabilirsiniz sabit boyutlu işaretçiler, bu yatırımların bir sabit boyutlu başlık bağlı her Object.

Teorik olarak, bu yükü herhangi bir Java nesnesinin bellekte temsil doğrudan bağlı olmalıdır, böylece kapsama derinliği: N. O(1) biri varsa Eğer uygulamada Mu?

CEVAP
30 Mayıs 2014, Cuma


The JVM specification states

Java Sanal Makinesi belirli bir iç dayatmaz nesnelerin yapısı.

Böylece belirtimi nasıl yaptığın değil.Ama...

Java Sanal Makinesi, Oracle uygulamaları bazı sınıfa başvuru veya kendini işlemek için bir işaretçi. işaretçiler bir çift: bir tablo için bir yöntemlerini içeren ve türünü temsil eden bir Sınıf nesnesi için bir işaretçi nesne nesne ve bellek için başka bir yığın tahsis nesne veri.

Tipik Oracle uygulamalarında yöntemler için O(1) olur. Bu yöntem tablo her sınıfta olan Method Area.

Java Sanal Makinesi tüm arasında paylaşılan bir yöntemi bir alana sahiptir Sanal Makine Java iş parçacıkları. Yöntem alan paraleldir depolama geleneksel bir dil derlenmiş kod için alan veya benzer "işletim sistemi bir süreç. bölüm metin Depolar her sınıf çalışma zamanı sabiti havuzu, ve alan gibi yapıları yöntem, veri, ve dahil olmak üzere, yöntem ve kurucular için kod, yöntemleri (madde 2.9) kullanılan sınıf ve örnek başlatma ve özel arabirim başlatma.

Ayrıca, method entries hakkında

method_info yapıları tüm bu yöntemler tarafından bildirilen temsil sınıf veya arabirim türü, örnek yöntemleri, sınıf yöntemleri de dahil olmak üzere örnek yöntemleri başlatma (madde 2.9), ve herhangi bir sınıf veya arabirim başlatma yöntemi (madde 2.9).Yöntemleri tablo öğeleri içermez superclasses devralınan yöntemleri veya temsil superinterfaces.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • discokatze

    discokatze

    23 EYLÜL 2009
  • FOSDEM

    FOSDEM

    13 Ocak 2009