การใช้หน่วยความจำของวัตถุจำนวนเต็มที่เขียนใน Java เปรียบเทียบ \ contrast กับการใช้หน่วยความจำของวัตถุจำนวนเต็มที่เขียนใน C ++ อย่างไร ความแตกต่างเล็กน้อยหรือไม่ ไม่แตกต่าง? ความแตกต่างใหญ่? ฉันคาดเดาว่ามันเหมือนกันเพราะ int เป็น int โดยไม่คำนึงถึงภาษา (?)
เหตุผลที่ฉันถามสิ่งนี้เพราะฉันกำลังอ่านเกี่ยวกับความสำคัญของการรู้ว่าข้อกำหนดหน่วยความจำของโปรแกรมเมื่อใดจะทำให้โปรแกรมเมอร์ไม่สามารถแก้ไขปัญหาที่กำหนดได้
สิ่งที่ทำให้ฉันหลงใหลคือจำนวนหน่วยความจำที่จำเป็นสำหรับการสร้างวัตถุ Java ชิ้นเดียว ยกตัวอย่างเช่นวัตถุจำนวนเต็ม แก้ไขให้ฉันถ้าฉันผิด แต่วัตถุจำนวนเต็ม Java ต้องการหน่วยความจำ 24 ไบต์:
- 4 ไบต์สำหรับตัวแปรอินสแตนซ์ของมัน
- 16 ไบต์ของค่าใช้จ่าย (อ้างอิงถึงคลาสของวัตถุข้อมูลการรวบรวมขยะ & ข้อมูลการซิงโครไนซ์)
- การซ้อน 4 ไบต์
เป็นอีกตัวอย่างหนึ่งอาร์เรย์ Java (ซึ่งถูกนำมาใช้เป็นวัตถุ) ต้องการ 48 + ไบต์:
- ข้อมูลส่วนหัว 24 ไบต์
- ค่าใช้จ่ายของวัตถุ 16 ไบต์
- ความยาว 4 ไบต์
- 4 ไบต์สำหรับการขยาย
- รวมทั้งหน่วยความจำที่จำเป็นในการจัดเก็บค่า
หน่วยความจำเหล่านี้ใช้อย่างไรเปรียบเทียบกับรหัสเดียวกันที่เขียนใน C ++
ฉันเคยหลงลืมเกี่ยวกับการใช้หน่วยความจำของโปรแกรม C ++ และ Java ที่ฉันเขียน แต่ตอนนี้ฉันเริ่มเรียนรู้เกี่ยวกับอัลกอริทึมแล้วฉันรู้สึกซาบซึ้งยิ่งขึ้นกับทรัพยากรของคอมพิวเตอร์
int
? ถ้าเป็นเช่นนั้นคุณควรเปรียบเทียบกับint
ใน Java ไม่ใช่Integer
- ตราบใดที่ C ++ ints ของคุณคือ 32 บิต