Middle+
Ինչքա՞ն է գնահատվում անհրաժեշտ հիշողության քանակը, որպեսզի պահվի byte տիպի primitive-ը LinkedList տվյալների կառուցվածքում։
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հանգույց: Յուրաքանչյուր տարրLinkedList-ում պարունակվում էNodeներքին դասի մեջ: Այս հանգույցը պարունակում է:- Օբյեկտի մետադատվություններ (հավաքածու): 8 կամ 12 байտ:
itemդաշտը: Հղում պահվող օբյեկտին (այստեղ,Byteօբյեկտ): Հղումը սովորաբար 4 կամ 8 байտ է (կախված 32 կամ 64 բիթ JVM-ից և սեղմված ցուցանիշների օգտագործումից):nextդաշտը: Հղում հաջորդ հանգույցին: 4 կամ 8 байտ:prevդաշտը: Հղում նախորդ հանգույցին: 4 կամ 8 байտ:- Համապատասխանություն: Ընդհանուր չափը և հանգույցի գլխավերևը նույնպես համընկնում են:
Նվազագույն գնահատական (JVM 32-bit առանց սեղմված ցուցանիշների):
Byteօբյեկտը: 12 байտ (հավաքածու) + 1 байտ (արժեք) + 3 байտ (համապատասխանություն) = մոտ 16 байտ:Nodeհանգույցը: 12 байտ (հավաքածու) + 4 байտ (հղումitem) + 4 байտ (հղումnext) + 4 байտ (հղումprev) + 4 байտ (համապատասխանություն) = մոտ 28 байտ:- Ընդհանուր չափը: մոտ 44 байտ:
Տիպիկ գնահատական (64-bit JVM սեղմված ցուցանիշներով - ըստ նախնական կարգավորումների, եթե հողատարածքը < 32 ԳԲ):
Byteօբյեկտը: 12 байտ (հավաքածու) + 1 байտ (արժեք) + 3 байտ (համապատասխանություն) = մոտ 16 байտ:Nodeհանգույցը: 12 байտ (հավաքածու) + 4 байտ (հղումitem) + 4 байտ (հղումnext) + 4 байտ (հղումprev) + 0 байտ (համապատասխանություն, եթե դաշտերը արդեն համընկնում են 8 байտին): = մոտ 24 байտ:- Ընդհանուր չափը: մոտ 40 байտ:
Առավելագույն գնահատական (64-bit JVM առանց սեղմված ցուցանիշների):
Byteօբյեկտը: 12 байտ (հավաքածու) + 1 байտ (արժեք) + 3 байտ (համապատասխանություն) = մոտ 16 байտ:Nodeհանգույցը: 12 байտ (հավաքածու) + 8 байտ (հղումitem) + 8 байտ (հղումnext) + 8 байտ (հղումprev) + 4 байտ (համապատասխանություն) = մոտ 40 байտ:- Ընդհանուր չափը: մոտ 56 байտ:
Այսպիսով, գնահատականը հիշողության համար byte-ի պահպանումը LinkedList<Byte>-ում մոտ 40-60 байտ է, որը մեծապես ավել է byte-ի ինքնուրույն 1 байտից, հաշվի առնելով Byte օբյեկտի և LinkedList.Node հանգույցի լրացուցիչ ծախսերը։