SORU
15 Aralık 2009, Salı


Java temel tür boolean boyutu

Java Virtual Machine Specification boolean için sınırlı destek olduğunu söylüyorilkeltürleri.

Java sanal makinesi talimatlar yalnızca boolean değerleri işlemleri için ayrılmış bulunmaktadır. Bunun yerine, boolean değerleri üzerinde çalışan Java programlama dilinde ifadeler Java sanal makinesi int veri türü değerleri kullanmak için derlenmiş.

İnt veri türü Boolean değerleri üzerinde çalışırken kullanılır, ama bu 32 bit bir bellek olduğunu yukarıda ima yanlış anlamış olabilirim ancak) oluşturmak. Bir boolean sadece 1 bit temsil eder verilen bilgiler:

  • Neden byte, veya short, int yerine bir boolean proxy olarak kullanılmaz?
  • Herhangi bir JVM için ne tam olarak ne kadar bir boolean türü depolamak için kullanılır bulmanın en güvenilir yolu var mı?

CEVAP
15 Aralık 2009, Salı


Kısa cevap: evet, boolean değerleri 32-bit varlıklar olarak işletilen, ama mantıksal dizileri 1 bayt başına öğe.

Uzun cevap: 32-bit yığın bir hücre kullandığı JVM, yerel değişkenler, yöntem bağımsız değişkenleri ve ifade değerleri tutmak için kullanılır. 1 hücre, 32 bit daha ilkel, daha büyük (uzun ve çift) yastıklı küçük ilkel 2 hücreleri. Bu teknik işlem sayısını en aza indirir, ama bazı tuhaf var mı yan etkileri (maske bayt gibi).

İlkel diziler içinde saklı daha az 32 bit kullanabilir, ve bir dizi ilkel değerleri yük depolamak için farklı işlem kodları vardır. Boolean ve bayt değerleri baload ve boolean diziler elemanı başına 1 bayt al anlamına gelir bastore işlem kodları kullanın.

Bildiğim kadarıyla bellek içi nesne düzenini gider, bu kaplı, altında "özel uygulama" rules, 1 bit, 1 byte ya da başka bir poster kaydetti, uyumlu bir 64-bit çift kelime sınırı. Büyük olasılıkla, temel donanım temel kelime boyutunu alır (32 veya 64 bit).


Bildiğim kadarıyla kullanmak Boolean değerleri alan miktarını en aza indirmek: gerçekten çok uygulama için bir sorun değildir. Kare (yerel değişkenler ve Yöntem bağımsız değişkenleri holding) çok büyük değil, ve büyük planda bir nesne içinde ayrı bir boolean büyük değil yığın. Eğer booleans dolu nesneleri bir sürü varsa, o zaman alıcı ve ayarlayıcıları ile yönetilen bit alanları kullanabilirsiniz. Ancak, bir ceza muhtemelen bellek cezası daha büyük olan CPU zaman Ödeyeceksin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011
  • Ty Moss

    Ty Moss

    20 Kasım 2007