SORU
20 Kasım 2013, ÇARŞAMBA


[]String vs char

IBM bazı slaytlar var adı : kullandığımızda diyor, String "From Java Code to Java Heap: Understanding the Memory Usage of Your Application" yerine char[] var

Maksimum yükü tek bir karakter için 24:1 olurdu!

ama havai " diye adlandırılan ne olduğunu anlamak mümkün değil. Herkes yardım edebilir misiniz?

Kaynak :

enter image description here

CEVAP
20 Kasım 2013, ÇARŞAMBA


Bu rakam 6 - 32-bit yazılım ve programları ile ilgilidir.

6 ile İLGİLENİYORUZ

-Java-ön 7 Dünya char[] Bir dizinin bir bölge için bir işaretçi olarak uygulanan dizeleri:

// "8 (4)" reads "8 bytes for x64, 4 bytes for x32"

class String{      //8 (4) house keeping   8 (4) class pointer
    char[] buf;    //12 (8) bytes   2 bytes per char -> 24 (16) aligned
    int offset;    //4 bytes                     -> three int
    int length;    //4 bytes                     -> fields align to
    int hash;      //4 bytes                     -> 16 (12) bytes
}

Bu yüzden saydım:

36 bytes per new String("a") for JDK 6 x32  <-- the overhead from the article
56 bytes per new String("a") for JDK 6 x64.


7 ile İLGİLENİYORUZ

Sadece, 7 String FIRSATLAR karşılaştırmak için char[] tampon ve hash alan sadece tutan bir sınıftır.

class String{      //8 (4)   8 (4) bytes             -> 16 (8)  aligned
    char[] buf;    //12 (8) bytes   2 bytes per char -> 24 (16) aligned
    int hash;      //4 bytes                         -> 8  (4)  aligned
}

Bu yüzden:

28 bytes per String for JDK 7 x32 
48 bytes per String for JDK 7 x64.

GÜNCELLEME

3.75:1 oran @Andrey açıklaması aşağıya bakınız. Bu oran dizenin uzunluğu büyüdükçe 1'e düşer.

Faydalı bağlantılar:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011