ทุกองค์ประกอบการสร้างและการเขียนสคริปต์ที่คุณเพิ่มลงในเกมของคุณจะใช้หน่วยความจำ เมื่อการใช้งานหน่วยความจำถึงขีดจำกัดของเอนจิน อุปกรณ์หรือเซิร์ฟเวอร์ของผู้ใช้อาจล้มเหลว ดังนั้นคุณจึงต้องติดตามการใช้งานอย่างต่อเนื่อง
Developer Console มีเครื่องมือสองอย่างสำหรับติดตามการใช้งานหน่วยความจำ:
Memory — ดูการใช้งานหน่วยความจำแบบเรียลไทม์ตามหมวดหมู่การใช้งาน รวมถึงองค์ประกอบที่คุณสร้างขึ้นเองและกระบวนการภายในของเอนจิน
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.
Memory
เครื่องมือ Memory จัดหมวดหมู่และแสดงการใช้งานหน่วยความจำแบบเรียลไทม์ แสดงการใช้งานหน่วยความจำใน 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 ช่วยให้คุณสร้างภาพถ่ายของการจัดสรรหน่วยความจำ heap ในปัจจุบัน ซึ่งหมายถึงหน่วยความจำที่สคริปต์ Luau ใช้ในการจัดเก็บตัวแปร ตาราง ฟังก์ชัน และโครงสร้างข้อมูลอื่นๆ ในระหว่างการทำงาน เครื่องมือนี้มีหลายมุมมองเพื่อช่วยให้คุณระบุปัญหาจากมุมมองที่แตกต่างกัน เช่น ประเภทของวัตถุและคลาสของเอนจิน นอกจากนี้ยังช่วยให้คุณสร้างภาพถ่ายหลายภาพเพื่อเปรียบเทียบความแตกต่างในการใช้งานหน่วยความจำเมื่อเวลาผ่านไป
สร้างภาพถ่าย
ในการสร้างภาพถ่ายของการจัดสรรหน่วยความจำของคุณ:
เปิด Developer Console
ขยายเมนูเครื่องมือเพื่อเลือก LuauHeap

ขยายเมนูดรอปดาวน์ของไคลเอนต์-เซิร์ฟเวอร์เพื่อเลือก Client หรือ Server
คลิกปุ่ม Create Snapshot
วิเคราะห์การใช้งานหน่วยความจำ
เครื่องมือนี้มีมุมมองมากมายเกี่ยวกับการใช้งานหน่วยความจำ Luau:
- Graph — แสดงต้นไม้การใช้งานหน่วยความจำที่รวมกัน โดยแต่ละโหนดแทนวัตถุที่มีการจัดสรรหน่วยความจำ
- Object Tags — แสดงขนาดหน่วยความจำและจำนวนตามประเภทการทำงาน เช่น function, table, และ thread
- Memory Categories — แสดงขนาดหน่วยความจำและจำนวนตามหมวดหมู่หน่วยความจำที่กำหนดโดยเอนจิน เอนจินจะกำหนดหมวดหมู่หน่วยความจำให้กับวัตถุในขณะจัดสรร
- Object Classes — แสดงขนาดหน่วยความจำและจำนวนตามคลาสของเอนจินที่สคริปต์ของคุณใช้และเก็บอินสแตนซ์ของพวกเขา เช่น EnumItem, Animation, CFrame มุมมองนี้ไม่แสดงการใช้งานหน่วยความจำภายในเอนจินเอง แต่จะแสดงเฉพาะ Luau VM
- Unique References และ Unparented Instances — แสดงจำนวนและจำนวนรวมของอินสแตนซ์สำหรับ unique references หรือ all remaining references ที่ไม่มีพ่อแม่ในโมเดลข้อมูลและเข้าถึงได้เฉพาะโดยสคริปต์ นอกจากนี้ยังแสดงเส้นทางทั้งหมดที่ยึดวัตถุอินสแตนซ์
Graph
มุมมอง Graph เป็นมุมมองที่ละเอียดและซับซ้อนที่สุดในบรรดามุมมองทั้งหมดของ Luau heap แสดงต้นไม้การใช้งานหน่วยความจำที่รวมกัน โดยแต่ละโหนดแทนวัตถุที่มีการจัดสรรหน่วยความจำ ต้นไม้แสดงให้เห็นว่าวัตถุเชื่อมต่อกันอย่างไรและหาทางที่สั้นที่สุดระหว่างการอ้างอิงวัตถุ มีคอลัมน์ขนาดหน่วยความจำดังต่อไปนี้:
- Size — การใช้งานหน่วยความจำของตนเองบวกกับการใช้งานหน่วยความจำโดยเนื้อหาภายในโครงสร้างข้อมูล
- Self — หน่วยความจำที่จัดสรรโดยตรงสำหรับโครงสร้างข้อมูลเอง โดยไม่รวมการใช้งานหน่วยความจำโดยเนื้อหาที่มันมีอยู่

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

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