Middle+
LinkedList ma'lumotlar tuzilmada byte turidagi primitive saqlash uchun kerak bo'ladigan xotira miqdorining taxminiy qiymati nima?
sobes.tech AI
AIdan javob
Xotira uchun LinkedList<Byte> ichida bitta byte primitivi saqlash uchun:
- Primitive
byte: o'zi 1 baytni egallaydi. - Wrapper obyekti
Byte:LinkedListda obyektlar saqlanadi, primitively emas.byteavtomatik ravishdaByteobyekti ichiga paketlanadi.Byteobyekti quyidagilarni o'z ichiga oladi:- Ob'ekt metadatalari (sarlavha): odatda 8 yoki 12 bayt (JVMga bog'liq).
valuemaydoni: 1 bayt (byteturidagi qiymat uchun).- Yig'ish: obyektlar ko'pincha mashina so'zining o'lchamiga (4 yoki 8 bayt) mos ravishda yig'iladi. Agar sarlavha 12 bayt va qiymat 1 bayt bo'lsa, 13 bayt bo'lsa, ehtimol 16 baytga mos keladi.
LinkedList.Nodetugun: har bir elementNodeichki sinfining nusxasida o'ralgan. Bu tugun quyidagilarni o'z ichiga oladi:- Ob'ekt metadatalari (sarlavha): 8 yoki 12 bayt.
itemmaydoni: saqlangan ob'ektga havola (Byteob'ekti). Havola odatda 4 yoki 8 bayt (32 yoki 64 bit JVM va siqilgan ko'rsatkichlardan foydalanish bilan).nextmaydoni: keyingi tugunga havola. 4 yoki 8 bayt.prevmaydoni: oldingi tugunga havola. 4 yoki 8 bayt.- Yig'ish: maydonlar va sarlavha maydonining umumiy o'lchami ham yig'iladi.
Minimal taxmin (32-bit JVM, siqilgan ko'rsatkichlar bo'lmagan holda):
Byteob'ekti: 12 bayt (sarlavha) + 1 bayt (qiymat) + 3 bayt (yig'ish) = taxminan 16 bayt.Node: 12 bayt (sarlavha) + 4 bayt (itemhavolasi) + 4 bayt (nexthavolasi) + 4 bayt (prevhavolasi) + 4 bayt (yig'ish) = taxminan 28 bayt.- Umumiy o'lcham: taxminan 16 + 28 = taxminan 44 bayt.
Tavsiya qilinadigan taxmin (64-bit JVM, siqilgan ko'rsatkichlar bilan - odatda 32GB dan kichik xotira uchun):
Byteob'ekti: 12 bayt (sarlavha) + 1 bayt (qiymat) + 3 bayt (yig'ish) = taxminan 16 bayt.Node: 12 bayt (sarlavha) + 4 bayt (itemhavolasi) + 4 bayt (nexthavolasi) + 4 bayt (prevhavolasi) + 0 bayt (yig'ish, agar maydonlar allaqachon 8 baytga mos keladigan tarzda yig'ilgan bo'lsa) = taxminan 24 bayt.
Maksimal taxmin (64-bit JVM, siqilgan ko'rsatkichlar bo'lmagan holda):
Byteob'ekti: 12 bayt (sarlavha) + 1 bayt (qiymat) + 3 bayt (yig'ish) = taxminan 16 bayt.Node: 12 bayt (sarlavha) + 8 bayt (itemhavolasi) + 8 bayt (nexthavolasi) + 8 bayt (prevhavolasi) + 4 bayt (yig'ish) = taxminan 40 bayt (yoki 36+4).- Umumiy o'lcham: taxminan 16 + 40 = taxminan 56 bayt.
Shunday qilib, LinkedList<Byte> ichida bitta byte primitivi saqlash uchun taxminan 40-60 bayt xotira sarflanadi, bu Byte ob'ektining va LinkedList.Node tugunining qo'shimcha xarajatlari tufayli, primitive o'zidan juda ko'p.**