ทุกองค์ประกอบการสร้างและการเขียนสคริปต์ที่คุณเพิ่มลงในประสบการณ์ของคุณจะใช้หน่วยความจำ เมื่อการใช้งานหน่วยความจำถึงขีดจำกัดของเครื่องยนต์ อุปกรณ์หรือเซิร์ฟเวอร์ของผู้ใช้ อาจเกิดการขัดข้อง ดังนั้นคุณจึงต้องตรวจสอบการใช้งานหน่วยความจำอย่างต่อเนื่อง
Developer Console มีเครื่องมือสองอย่างสำหรับการตรวจสอบการใช้งานหน่วยความจำ:
หน่วยความจำ — ดูการใช้งานหน่วยความจำแบบเรียลไทม์ตามหมวดหมู่การใช้งาน รวมถึงองค์ประกอบที่กำหนดเองของคุณและกระบวนการภายในของเครื่องยนต์
Luau heap — สร้างภาพถ่ายของหน่วยความจำ heap ซึ่งหมายถึงการจัดสรรหน่วยความจำของสคริปต์ของคุณ เครื่องมือนี้มีหลายมุมมองเพื่อช่วยให้คุณระบุการจัดสรรหน่วยความจำและปัญหาจากมุมมองที่แตกต่างกัน เช่น ประเภทวัตถุและคลาสของเครื่องยนต์ นอกจากนี้ยังช่วยให้คุณสร้างภาพถ่ายหลายภาพเพื่อเปรียบเทียบบันทึกการใช้งานหน่วยความจำเมื่อเวลาผ่านไป
You can open the console during a testing or live game session using any of the following ways:
- Press F9.
- Type /console into the chat.
- Use the in-game menu:
Open the in-game Roblox Menu.

Select the Settings tab.
Scroll down to Developer Console and click Open.
หน่วยความจำ
เครื่องมือ หน่วยความจำ จัดประเภทและแสดงการใช้งานหน่วยความจำแบบเรียลไทม์ แสดงการใช้งานหน่วยความจำใน MB ของแต่ละหมวดหมู่และสร้างกราฟการเปลี่ยนแปลงการใช้งานเมื่อเวลาผ่านไป
ในการดูการจัดสรรหน่วยความจำ:
เปิด Developer Console
ขยายเมนูเครื่องมือเพื่อเลือก Memory

ขยายดรอปดาวน์ลูกค้า-เซิร์ฟเวอร์เพื่อเลือก Client หรือ Server
สํารวจหมวดหมู่การใช้งานหน่วยความจำและรายการ หากคุณต้องการดูการใช้งานเมื่อเวลาผ่านไป ขยายหมวดหมู่เพื่อแสดงกราฟ
CoreMemory — การใช้งานหน่วยความจำโดยกระบวนการหลักของเครื่องยนต์ ได้แก่ การเชื่อมต่อเครือข่าย อวาตาร์ และองค์ประกอบของ GUI ที่คุณไม่มีการควบคุมโดยตรง
PlaceMemory — การใช้งานหน่วยความจำตามวิธีที่คุณสร้างประสบการณ์ของคุณ รวมถึงโมเดล พื้นที่ ส่วนต่างๆ สคริปต์ และองค์ประกอบที่กำหนดเองอื่นๆ ที่คุณเพิ่มลงในประสบการณ์ของคุณ
ข้อมูลอ้างอิง PlaceMemoryหมวดหมู่ คำอธิบาย HttpCache ทรัพย์สิน (รูปภาพ, เมช, ฯลฯ) ที่โหลดจากเซิร์ฟเวอร์ Roblox และบันทึกไว้ในหน่วยความจำในแคช Instances Instances ในสถานที่ Signals สัญญาณที่กระตุ้นระหว่างอุทกภัย (เหตุการณ์ที่เกิดขึ้นบนอุทกภัยหนึ่งเพื่อกระตุ้นเหตุการณ์บนอุทกภัยอีกหนึ่ง) LuaHeap หน่วยความจำ heap สำหรับทั้งสคริปต์หลัก (สคริปต์ที่มาพร้อมกับลูกค้า Roblox) และสคริปต์ที่กำหนดเอง Script สคริปต์ Luau PhysicsCollision ข้อมูลการชนเพื่อการจำลองทางฟิสิกส์ PhysicsParts เรขาคณิตและเคลื่อนที่ทางฟิสิกส์ GraphicsSolidModels ข้อมูลกราฟิกสำหรับการเรนเดอร์โมเดลที่เป็นของแข็ง GraphicsMeshParts กราฟิกสำหรับวัตถุ MeshPart GraphicsParticles กราฟิกสำหรับระบบอนุภาค GraphicsParts กราฟิกสำหรับส่วนต่างๆ GraphicsSpatialHash การเรนเดอร์ทั่วไป GraphicsTerrain กราฟิกสำหรับพื้นผิว GraphicsTexture หน่วยความจำพิเศษ GraphicsTextureCharacter หน่วยความจำชิ้นส่วนสำหรับตัวละคร Sounds เสียงในหน่วยความจำ StreamingSounds เสียงที่สตรีมมิ่ง TerrainVoxels พิกเซลพื้นดิน TerrainPhysics ฟิสิกส์ของพื้นผิว Gui หน่วยความจำที่ใช้โดยองค์ประกอบ GUI ทั่วไป Animation หน่วยความจำที่ใช้สำหรับข้อมูลอนิเมชั่น เช่น ท่าทางและข้อมูลที่จำไว้ของ KeyframeSequence สำหรับอนิเมชันอวาตาร์ Navigation หน่วยความจำที่ใช้โดยโครงสร้างสนับสนุนสำหรับ PathfindingService UntrackedMemory — การจัดสรรหน่วยความจำที่ระบบไม่สามารถกำหนดได้อย่างง่ายดายกับแหล่งที่มาที่เฉพาะเจาะจง
PlaceScriptMemory — การใช้งานหน่วยความจำของสคริปต์ของคุณ โดยมีข้อมูลเชิงลึกเกี่ยวกับวิธีที่สคริปต์แต่ละรายการและแท็กหน่วยความจำที่กำหนดเองมีส่วนช่วยในการใช้งานหน่วยความจำโดยรวม
CoreScriptMemory — การใช้งานหน่วยความจำโดยสคริปต์ภายในเครื่องยนต์ที่คุณไม่มีการควบคุมโดยตรง
ในหมวดหมู่เหล่านี้ PlaceMemory และ PlaceScriptMemory เป็นหมวดหมู่ที่สำคัญที่สุดสำหรับการเพิ่มประสิทธิภาพการทำงาน เพราะมันช่วยให้คุณเข้าใจว่าการสร้างและการเขียนสคริปต์ของคุณมีผลต่อการบริโภคหน่วยความจำอย่างไรและพื้นที่ที่อาจต้องปรับปรุง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ PlaceScriptMemory ใช้เครื่องมือ Luau heap เพื่อสร้างภาพถ่ายและวิเคราะห์การจัดสรรหน่วยความจำตามมาตรวัดที่แตกต่างกัน
Luau heap
เครื่องมือ Luau heap ช่วยให้คุณสร้างภาพถ่ายของการจัดสรรหน่วยความจำในปัจจุบัน ซึ่งหมายถึงหน่วยความจำที่สคริปต์ Luau ใช้เพื่อเก็บตัวแปร ตาราง ฟังก์ชัน และโครงสร้างข้อมูลในการทำงานอื่น ๆ เครื่องมือนี้มีหลายมุมมองเพื่อช่วยให้คุณระบุปัญหาจากมุมมองที่แตกต่างกัน เช่น ประเภทวัตถุและคลาสของเครื่องยนต์ นอกจากนี้ยังอนุญาตให้คุณสร้างภาพถ่ายหลายภาพเพื่อเปรียบเทียบบันทึกการใช้งานหน่วยความจำเมื่อเวลาผ่านไป
สร้างภาพถ่าย
ในการสร้างภาพถ่ายของการจัดสรรหน่วยความจำของคุณ:
เปิด Developer Console
ขยายเมนูเครื่องมือเพื่อเลือก LuauHeap

ขยายดรอปดาวน์ลูกค้า-เซิร์ฟเวอร์เพื่อเลือก Client หรือ Server
คลิกปุ่ม Create Snapshot
วิเคราะห์การใช้งานหน่วยความจำ
เครื่องมือมีมุมมองมากมายในการใช้งานหน่วยความจำของ Luau:
- กราฟ — แสดงต้นไม้การใช้งานหน่วยความจำรวม โดยแต่ละโหนดแทนวัตถุที่มีการจัดสรรหน่วยความจำ
- แป Tags — แสดงขนาดและจำนวนหน่วยความจำตามประเภทการทำงาน เช่น function, table, และ thread
- หมวดหมู่หน่วยความจำ — แสดงขนาดและจำนวนหน่วยความจำตามหมวดหมู่ที่กำหนดโดยเครื่องยนต์ เครื่องยนต์จะกำหนดหมวดหมู่หน่วยความจำให้กับวัตถุในเวลาจัดสรร
- คลาสวัตถุ — แสดงขนาดและจำนวนหน่วยความจำตามคลาสของเครื่องยนต์ที่สคริปต์ของคุณใช้และเก็บอินสแตนซ์ของพวกมัน เช่น EnumItem, Animation, CFrame มุมมองนี้สำคัญมาก เนื่องจากจะไม่แสดงการใช้งานหน่วยความจำภายในเครื่องยนต์ แต่จะแสดงเฉพาะ VM ของ Luau
- อ้างอิงเอกลักษณ์ และ อินสแตนซ์ที่ไม่มีพ่อแม่ — แสดงจำนวนและจำนวนรวมของอินสแตนซ์สำหรับ อ้างอิงเอกลักษณ์ หรือ อ้างอิงที่เหลือทั้งหมด ที่ไม่มีพ่อแม่ในโมเดลข้อมูลและเข้าถึงได้โดยสคริปต์เท่านั้น นอกจากนี้ยังแสดงเส้นทางทั้งหมดที่ยึดวัตถุอินสแตนซ์
กราฟ
มุมมอง กราฟ เป็นมุมมองที่ละเอียดและซับซ้อนที่สุดในทุกมุมมองของ Luau heap มันแสดงต้นไม้การใช้งานหน่วยความจำรวม โดยแต่ละโหนดแทนวัตถุที่มีการจัดสรรหน่วยความจำ ต้นไม้จะแสดงให้เห็นว่าวัตถุเชื่อมต่อกันอย่างไรและระบุเส้นทางที่สั้นที่สุดระหว่างการอ้างอิงวัตถุ มันมีคอลัมน์ขนาดหน่วยความจำดังนี้:
- ขนาด — การใช้งานหน่วยความจำเองบวกกับการใช้งานหน่วยความจำที่อยู่ภายในโครงสร้างข้อมูล
- ตนเอง — หน่วยความจำที่จัดสรรโดยตรงสำหรับโครงสร้างข้อมูลเอง โดยไม่รวมถึงการใช้งานหน่วยความจำของเนื้อหาที่มันมีอยู่

รากของกราฟต้นไม้คือ registry ซึ่งเก็บการอ้างอิงของเครื่องยนต์และ Luau ทั้งหมด เช่น ฟังก์ชันที่เชื่อมโยงกับสัญญาณหรือห้องสมุดงาน ฟังก์ชันทั่วไประดับสูง ตารางที่ส่งคืนโดยสคริปต์โมดูล และฟังก์ชัน รวมถึงตารางและคลาสทั่วไประดับสูง มันมักจะเป็นพ่อแม่รายการทั่วไปดังต่อไปนี้:
- Module @Path.To.Module คือตารางที่ส่งคืนโดยสคริปต์โมดูล
- name:123 =Path.To.Module เป็นฟังก์ชันภายในสคริปต์ที่กำหนด ฟังก์ชันอนุรักษ์ไม่มีชื่อ โหนดระดับบนมักจะอ้างอิงถึงฟังก์ชันของสคริปต์ทั่วไปรวมกัน ตัวอย่างเช่น :1= Workspace.[Username].Animate
- upvalue คือการอ้างอิงสำหรับฟังก์ชันที่ถูกจับ ควรดูที่ จับพื้นที่เฉพาะท้องถิ่น สำหรับข้อมูลเพิ่มเติม
- env หมายถึงสภาพแวดล้อมของฟังก์ชัน ในกรณีส่วนใหญ่ มันคือตารางที่แสดงถึงขอบเขตทั่วไปรวมของสคริปต์
- globals หมายถึงสภาพแวดล้อมของเธรด
- [key] แทนวัตถุที่ทำหน้าที่เป็นคีย์ของตาราง
- array แทนอาร์เรย์
- stack หมายถึงอาร์เรย์ที่เก็บทุกตัวแปรโลคัลของฟังก์ชัน
- constants แทนค่าคงที่ทั้งหมดที่ฟังก์ชันใช้งาน
หมวดหมู่หน่วยความจำ
มุมมอง หมวดหมู่หน่วยความจำ แสดงขนาดและจำนวนหน่วยความจำตามหมวดหมู่หน่วยความจำ ซึ่งเครื่องยนต์จะกำหนดให้กับวัตถุในเวลาจัดสรร โดยค่าเริ่มต้น หมวดหมู่หน่วยความจำจะมีชื่อเดียวกันกับสคริปต์หรือคุณสามารถกำหนดชื่อหมวดหมู่หน่วยความจำที่กำหนดเองโดยใช้ฟังก์ชัน debug.setmemorycategory
การอ้างอิงเอกลักษณ์และอินสแตนซ์ที่ไม่มีพ่อแม่
มุมมอง การอ้างอิงเอกลักษณ์ และ อินสแตนซ์ที่ไม่มีพ่อแม่ มีความเกี่ยวข้องกัน ทั้งคู่แสดงการใช้งานหน่วยความจำของอินสแตนซ์ซึ่งไม่มีพ่อแม่ในโมเดลข้อมูลและเข้าถึงได้โดยสคริปต์เท่านั้น พร้อมกับเส้นทางทั้งหมดที่ยึดวัตวัตถุของอินสแตนซ์ ถ้าอินสแตนซ์อ้างอิงไว้ภายในสคริปต์ของ Luau เท่านั้น มันจะปรากฏอยู่ใน การอ้างอิงเอกลักษณ์ มิฉะนั้น มันยังมีการใช้งานโดยระบบของ Roblox และจะปรากฏใน อินสแตนซ์ที่ไม่มีพ่อแม่ มุมมองทั้งสองแสดงสองตัวชี้วัด:
- จำนวน — จำนวนอินสแตนซ์ที่มีชื่อเดียวกันที่สามารถเข้าถึงได้จากเส้นทางเดียวกัน เช่น จำนวนหลายอินสแตนซ์ที่ชื่อว่า Dragon ในตารางเดียวกัน
- อินสแตนซ์ทั้งหมด — จำนวนรวมของวัตถุทั้งหมดในรากเหล่านั้น ซึ่งรวมถึงทุกชิ้นส่วน สคริปต์ และวัตถุเสียงที่สร้างอินสแตนซ์ Dragon

มุมมองเหล่านี้มีประโยชน์ในการระบุอินสแตนซ์ที่เชื่อมโยงกันโดยไม่จำเป็น ซึ่งคุณจะต้องแยกเมื่อคุณไม่ต้องการใช้งานอีกต่อไป หากคุณเห็นอินสแตนซ์ที่ไม่คาดคิดมากมายในมุมมองนี้ ให้ตรวจสอบเส้นทางที่ถืออยู่และประเมินว่าเป็นสิ่งที่จำเป็นหรือไม่