ใช้เพื่อเข้าถึงและจัดสรรหน่วยความจำจำนวนมากอย่างมีประสิทธิภาพเช่นในเครื่องมือ voxel ของคุณเอง! (เช่นเกมสไตล์ Minecraft)
จากประสบการณ์ของฉัน JVM มักไม่สามารถกำจัดขอบเขตการตรวจสอบในสถานที่ที่คุณต้องการอย่างแท้จริง ตัวอย่างเช่นหากคุณวนซ้ำอาร์เรย์ขนาดใหญ่ แต่การเข้าถึงหน่วยความจำจริงถูกซ่อนอยู่ภายใต้การเรียกใช้เมธอดที่ไม่ใช่เสมือนในลูป JVM อาจยังคงตรวจสอบขอบเขตกับการเข้าถึงอาเรย์แต่ละครั้ง ห่วง ดังนั้นเพื่อให้ได้ประสิทธิภาพที่มากขึ้นคุณสามารถกำจัดการตรวจสอบขอบเขต JVM ภายในลูปผ่านวิธีการที่ใช้ sun.misc.Unsafe เพื่อเข้าถึงหน่วยความจำโดยตรงตรวจสอบให้แน่ใจว่าได้ทำการตรวจสอบตัวเองในสถานที่ที่ถูกต้อง (คุณเป็นไงขอบเขตการตรวจสอบในระดับบางอย่างใช่ไหม?)
* โดยที่ไม่ใช่เสมือนฉันหมายความว่า JVM ไม่ควรแก้ไขแบบไดนามิกไม่ว่าวิธีการเฉพาะของคุณคืออะไรเพราะคุณรับประกันได้อย่างถูกต้องว่าคลาส / วิธี / อินสแตนซ์เป็นการผสมผสานระหว่างสแตติก / ขั้นสุดท้าย / สิ่งที่มี
สำหรับเครื่องยนต์ voxel ที่ปลูกในบ้านของฉันสิ่งนี้ส่งผลให้ประสิทธิภาพเพิ่มขึ้นอย่างมากในระหว่างการสร้างและการจัดลำดับ (สถานที่ที่ฉันอ่าน / เขียนไปยังอาร์เรย์ทั้งหมดในครั้งเดียว) ผลลัพธ์อาจแตกต่างกันไป แต่ถ้าไม่มีปัญหาการกำจัดขอบเขตของคุณแล้วสิ่งนี้จะแก้ไขได้
มีปัญหาบางอย่างที่อาจเกิดขึ้นกับสิ่งนี้: โดยเฉพาะเมื่อคุณให้ความสามารถในการเข้าถึงหน่วยความจำโดยไม่ จำกัด ขอบเขตการตรวจสอบกับลูกค้าของอินเทอร์เฟซของคุณพวกเขาอาจจะละเมิดมัน (อย่าลืมว่าแฮ็กเกอร์อาจเป็นลูกค้าของส่วนต่อประสานของคุณ ... โดยเฉพาะอย่างยิ่งในกรณีของเครื่องมือ voxel ที่เขียนด้วยภาษาจาวา) ดังนั้นคุณควรออกแบบส่วนต่อประสานของคุณในลักษณะที่หน่วยความจำเข้าถึงไม่ได้ คุณควรจะระมัดระวังอย่างมากในการตรวจสอบข้อมูลผู้ใช้ก่อนที่จะสามารถที่เคยเคยคลาคล่ำด้วยอินเตอร์เฟซที่เป็นอันตรายของคุณ เมื่อพิจารณาถึงความหายนะที่แฮ็กเกอร์สามารถทำได้ด้วยการเข้าถึงหน่วยความจำที่ไม่ได้ตรวจสอบมันอาจเป็นการดีที่สุดที่จะใช้วิธีทั้งสอง