Middle+
LinkedList маалымат структурасында byte тибиндеги primitive сактоо үчүн керектүү эс тутумдун болжолдуу көлөмү кандай?
sobes.tech AI
AIден жооп
Мамлекеттик эсэстүү үчүн бир byte примитивин LinkedList<Byte> ичинде сактоо боюнча баа берүү:
- Примитив
byte: 1 байтты өзүнчө алат. - Объект-обгортка
Byte:LinkedListичинде объекттер сакталат, примитивтер эмес.byteавтоматтык түрдөByteобъектисине оӊойтулат.Byteобъекси төмөнкүдөй түзүлөт:- Объекттин метадата (титул): Адатта 8 же 12 байт (JVMге жараша).
valueталаа: 1 байт (byteтүрүндөгү мааниге).- Теңдештирүү: Объекттер көбүнесе машинанын сөзүнүн өлчөмүнө (4 же 8 байт) туураланат. Эгер титул 12 байт жана мааниси 1 байт болсо, 13 байт, анда ал 16 байтка туураланат.
LinkedList.Nodeтүйүнү: Ар бир элементNodeички класында капталган. Бул түйүн төмөнкүлөрдү камтыйт:- Объекттин метадаталары (титул): 8 же 12 байт.
itemталаа: сакталган объектке шилтеме (бул учурда,Byteобъектисине). Шилтеме адатта 4 же 8 байт (32 же 64 бит JVM жана кысылган көрсөткүчтөрдү колдонуу менен).nextталаа: кийинки түйүнгө шилтеме. 4 же 8 байт.prevталаа: мурунку түйүнгө шилтеме. 4 же 8 байт.- Туташтыруу: Жалпы өлчөмү жана түйүндүн титулу дагы туураланат.
Минималдуу баа берүү (JVM 32-бит, кысылган көрсөткүчтөр жок):
Byteобъектисинин өлчөмү: 12 байт (титул) + 1 байт (маани) + 3 байт (түзөтүү) = болжол менен 16 байт.Nodeтүйүнү: 12 байт (титул) + 4 байт (itemшилтемеси) + 4 байт (nextшилтемеси) + 4 байт (prevшилтемеси) + 4 байт (түзөтүү) = болжол менен 28 байт.- Жалпы өлчөмү: болжол менен 44 байт.
Стандарттык баа берүү (64-бит JVM, кысылган көрсөткүчтөр менен):
Byteобъектисинин өлчөмү: 12 байт (титул) + 1 байт (маани) + 3 байт (түзөтүү) = болжол менен 16 байт.Nodeтүйүнү: 12 байт (титул) + 4 байт (itemшилтемеси) + 4 байт (nextшилтемеси) + 4 байт (prevшилтемеси) + 0 байт (түзөтүү, эгер полелер 8 байтка туураланса) = болжол менен 24 байт.- Жалпы өлчөмү: болжол менен 40 байт.
Максималдуу баа берүү (64-бит JVM, кысылган көрсөткүчтөр жок):
Byteобъектисинин өлчөмү: 12 байт (титул) + 1 байт (маани) + 3 байт (түзөтүү) = болжол менен 16 байт.Nodeтүйүнү: 12 байт (титул) + 8 байт (itemшилтемеси) + 8 байт (nextшилтемеси) + 8 байт (prevшилтемеси) + 4 байт (түзөтүү) = болжол менен 40 байт.- Жалпы өлчөмү: болжол менен 56 байт.
Ошентип, бир byte примитивин LinkedList<Byte> ичинде сактоо үчүн паметтин баа берүү болжол менен 40-60 байт түзөт, ал Byte объекттин жана LinkedList.Node түйүнүн кошумча чыгымдарына байланыштуу. Бул 1 байт примитивге караганда кыйла көп.