Java ile yazılan bir tam sayı nesnesinin bellek kullanımı, C ++ ile yazılmış bir tam sayı nesnesinin bellek kullanımı ile nasıl karşılaştırılır? Fark ihmal edilebilir mi? Fark yok? Büyük bir fark? Aynı olduğunu düşünüyorum çünkü int ne olursa olsun int (?)
Bunu sormamın nedeni , bir programın bellek gereksinimlerinin programcının verilen bir sorunu çözmesini ne zaman engelleyeceğini bilmenin önemini okuyordum .
Beni büyüleyen tek bir Java nesnesi oluşturmak için gereken bellek miktarı. Örneğin, bir tam sayı nesnesini ele alalım. Yanılıyorsam ama bir Java tam sayı nesnesi 24 bayt bellek gerektiriyorsa beni düzeltin:
- İnt örnek değişkeni için 4 bayt
- 16 bayt ek yük (nesnenin sınıfına referans, çöp toplama bilgisi ve senkronizasyon bilgisi)
- 4 bayt dolgu
Başka bir örnek olarak, bir Java dizisi (nesne olarak uygulanır) 48 + bayt gerektirir:
- 24 bayt başlık bilgisi
- 16 baytlık nesne yükü
- Uzunluk için 4 bayt
- Dolgu için 4 bayt
- artı değerleri saklamak için gereken bellek
Bu bellek kullanımları C ++ ile yazılmış aynı kodla nasıl karşılaştırılır?
Eskiden yazdığım C ++ ve Java programlarının bellek kullanımından habersizdim, ama şimdi algoritmalar hakkında bilgi edinmeye başladığım için, bilgisayarın kaynakları için daha fazla takdir görüyorum.
int
? Öyleyse, C ++ girişleriniz 32 bit olduğu süreceint
bunu Java ile karşılaştırmamalısınızInteger
.