บทความนี้แนะนำวิธีการคำนวณจำนวนวัตถุพื้นที่ Java ที่ครอบครอง มันถูกแชร์กับคุณสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
1. หัววัตถุ
มีอย่างน้อยสองคำที่หัวของวัตถุ หากเป็นอาร์เรย์สามคำมีดังนี้:
ii. กฎระเบียบ
อย่างแรกวัตถุใด ๆ คือ 8 ไบต์จัดตำแหน่งและคุณสมบัติจะถูกเก็บไว้ในลำดับของ [ยาว, สอง], [int, float], [char, short], [byte, boolean] และการอ้างอิง ตัวอย่างเช่น:
การทดสอบระดับสาธารณะ {ไบต์ A; int b; บูลีน C; ยาว d; วัตถุ E;}หากคุณสมบัติของวัตถุนี้ถูกเก็บไว้ตามลำดับพื้นที่ที่จะถูกครอบครองคือ: หัว (8) + a (1) + การขยาย (3) + b (4) + c (1) + การเลื่อน (7) + d (8) + e (4) + padding (4) = 40. แต่ตามกฎนี้ Padding (4) = 32. คุณจะเห็นว่ามันช่วยประหยัดพื้นที่ได้มาก
เมื่อพูดถึงความสัมพันธ์ในการสืบทอดมีกฎพื้นฐาน: อันดับแรกสมาชิกในชั้นเรียนหลักจะถูกเก็บไว้และจากนั้นสมาชิกในคลาสย่อยจะถูกเก็บไว้ ตัวอย่างเช่น:
คลาส A {Long A; int b; int c;} คลาส B ขยาย {long d;}คำสั่งซื้อและพื้นที่ที่ถูกครอบครองด้วยวิธีนี้มีดังนี้: หัว (8) + a (8) + b (4) + c (4) + d (8) = 32 ดังนั้นถ้าแอตทริบิวต์ในคลาสพาเรนต์ไม่เพียงพอแปดไบต์? สิ่งนี้ให้กฎใหม่: หากช่วงเวลาระหว่างสมาชิกคนสุดท้ายของคลาสแม่และสมาชิกคนแรกของชั้นเด็กไม่เพียงพอสำหรับ 4 ไบต์จะต้องขยายไปยังหน่วยพื้นฐานของ 4 ไบต์ตัวอย่างเช่น:
คลาส A {byte a;} คลาส B ขยาย {byte b;}จากนั้นพื้นที่ที่ถูกครอบครองในเวลานี้มีดังนี้: หัว (8) + a (1) + ช่องว่าง (3) + b (1) + การขยาย (3) = 16 เห็นได้ชัดว่าวิธีนี้ค่อนข้างสิ้นเปลืองดังนั้น: ถ้าสมาชิกคนแรกของคลาสย่อยเป็นสองเท่าหรือยาว
คลาส A {byte a;} class B ขยาย {long b; สั้น C; Byte D;}พื้นที่ที่ถูกครอบครองในเวลานี้มีดังนี้: หัว (8) + a (1) + ช่องว่างภายใน (3) + c (2) + d (1) + ช่องว่าง (1) + b (8) = 24
ข้างต้นเป็นวิธีการคำนวณว่าวัตถุ Java มีพื้นที่เท่าไหร่ ฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้การเขียนโปรแกรม Java