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 :
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:
- Memory usage of Java Strings and string-related objects.
- Calculate memory of a Map Entry bir nesnenin boyutunu almak için basit bir teknik.
Bunu Paylaş:
C string dönüşüm '*' char sür...
[]String vs char...
Dönüştürmek için nasıl bir std::string...
stringstream, string, char* dönüşüm ka...
.NET / C# - char Dönüştürmek[] string...