ฉันเพิ่งเริ่มต้นการวิจัยและพัฒนาเกี่ยวกับขนาดฮีปของ JVM และสังเกตเห็นพฤติกรรมแปลกๆ บางอย่าง
- ขนาด RAM ระบบของฉันคือ 4 GB
- ระบบปฏิบัติการเป็น Windows 7 แบบ 64 บิต
- เวอร์ชันจาวาคือ 1.7
นี่คือข้อสังเกต:
ฉันเขียนโปรแกรมหลักตัวอย่างซึ่งเริ่มทำงาน & เข้าสู่สถานะ รอ ทันที
เมื่อฉันรันโปรแกรมจาก eclipse ด้วยพารามิเตอร์ -Xms1024m -Xmx1024m มันสามารถรันได้ 3 ครั้ง/กระบวนการแบบขนานจาก eclipse เช่น 3 แบบขนาน ประมวลผลเท่านั้นเนื่องจาก RAM ของฉันคือ 4GB เท่านั้น นี่เป็นลักษณะการทำงานที่คาดหวัง
ดังนั้นฉันจึงรันอีกครั้งด้วยพารามิเตอร์ -Xms512m -Xmx512m และสามารถรันได้ 19 ครั้ง/กระบวนการแบบขนานจาก eclipse แม้ว่า RAM ของฉันจะเป็น 4GB ยังไง?
ฉันใช้เครื่องมือ VisualVM เพื่อตรวจสอบข้ามและเห็นรหัสกระบวนการ 19 รหัส และรหัสกระบวนการแต่ละรหัสได้รับการจัดสรร 512m แม้ว่าขนาด RAM ของฉันจะเป็น 4GB แต่ทำอย่างไร
ฉันได้อ่านและอ่านเอกสาร Oracle มากมายเกี่ยวกับการจัดการหน่วยความจำและการเพิ่มประสิทธิภาพ แต่บทความเหล่านั้นไม่ได้ตอบคำถามของฉัน
ขอบคุณล่วงหน้า.
ขอบคุณบาจิ