การใช้หน่วยความจำ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

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


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:
    1. Open the in-game Roblox Menu.

    2. Select the Settings tab.

    3. Scroll down to Developer Console and click Open.

Memory

เครื่องมือ Memory จัดหมวดหมู่และแสดงการใช้หน่วยความจำแบบเรียลไทม์ แสดงการใช้หน่วยความจำใน MB ของแต่ละหมวดหมู่และสร้างกราฟการเปลี่ยนแปลงการใช้งานเมื่อเวลาผ่านไป

ในการดูการจัดสรรหน่วยความจำ:

  1. เปิด Developer Console

  2. ขยายเมนูเครื่องมือเพื่อเลือก Memory

    เมนูดรอปดาวน์ของเครื่องมือ Developer Console ทั้งหมด โดยมีตัวเลือก Memory ที่เน้นสำหรับการเลือก
  3. ขยายเมนูลูกค้าสำหรับเซิร์ฟเวอร์เพื่อเลือก Client หรือ Server

  4. เรียกดูหมวดหมู่การใช้หน่วยความจำและรายการต่างๆ หากคุณต้องการดูการใช้งานเมื่อเวลาผ่านไป ให้ขยายหมวดหมู่เพื่อแสดงกราฟ

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

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

      หมวดหมู่คำอธิบาย
      HttpCacheทรัพย์สิน (ภาพ, เมช, ฯลฯ) ที่โหลดจากเซิร์ฟเวอร์ Roblox และตอนนี้ถูกเก็บไว้ในแคชในหน่วยความจำ
      InstancesInstances ในสถานที่
      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 ใช้ในการจัดเก็บตัวแปร ตาราง ฟังก์ชัน และโครงสร้างข้อมูลอื่นๆ ในระหว่างการทำงาน เครื่องมือนี้มีหลายมุมมองเพื่อช่วยให้คุณระบุปัญหาจากมุมมองที่แตกต่างกัน เช่น ประเภทของวัตถุและคลาสของเอนจิน นอกจากนี้ยังช่วยให้คุณสร้างภาพถ่ายหลายภาพเพื่อเปรียบเทียบความแตกต่างในการใช้หน่วยความจำเมื่อเวลาผ่านไป

สร้างภาพถ่าย

ในการสร้างภาพถ่ายของการจัดสรรหน่วยความจำของคุณ:

  1. เปิด Developer Console

  2. ขยายเมนูเครื่องมือเพื่อเลือก LuauHeap

    เมนูดรอปดาวน์ของเครื่องมือ Developer Console ทั้งหมด โดยมีตัวเลือก LuauHeap ที่เน้นสำหรับการเลือก
  3. ขยายเมนูลูกค้าสำหรับเซิร์ฟเวอร์เพื่อเลือก Client หรือ Server

  4. คลิกปุ่ม 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 — หน่วยความจำที่จัดสรรโดยตรงสำหรับโครงสร้างข้อมูลเอง โดยไม่รวมการใช้หน่วยความจำโดยเนื้อหาที่มันมีอยู่
ตัวอย่างมุมมอง Graph

รากของกราฟต้นไม้คือ 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
ตัวอย่างมุมมอง Unique Reference

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

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ