Sử dụng bộ nhớ

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Mỗi thành phần xây dựng và lập trình mà bạn thêm vào trải nghiệm của mình sẽ tiêu tốn bộ nhớ. Khi việc sử dụng bộ nhớ đạt đến giới hạn của động cơ, thiết bị hoặc máy chủ của người dùng có thể bị sập, vì vậy bạn cần theo dõi việc sử dụng một cách chủ động.


Bảng điều khiển Nhà phát triển cung cấp hai công cụ để theo dõi việc sử dụng bộ nhớ:

  • Bộ nhớ — Xem tiêu thụ bộ nhớ theo thời gian thực theo các danh mục sử dụng, bao gồm các thành phần tùy chỉnh của bạn và các quá trình nội bộ của động cơ.

  • Luau heap — Tạo các bản chụp của bộ nhớ heap, đề cập đến việc cấp phát bộ nhớ của các script của bạn. Công cụ này cung cấp nhiều chế độ xem để giúp bạn xác định cấp phát bộ nhớ hiện tại và các vấn đề từ nhiều góc độ khác nhau, chẳng hạn như loại đối tượng và lớp động cơ. Nó cũng cho phép bạn tạo nhiều bản chụp để so sánh sự khác biệt trong việc sử dụng bộ nhớ theo thời gian.

Bạn có thể mở bảng điều khiển trong quá trình thử nghiệm hoặc phiên chơi trực tiếp bằng bất kỳ cách nào sau đây:

  • Nhấn F9.
  • /console vào trò chuyện.
  • Sử dụng menu trong trò chơi:
    1. Mở Menu Roblox trong trò chơi.

    2. Chọn tab Cài Đặt.

    3. Cuộn xuống Bảng Điều Khiển Nhà Phát Triển và nhấp vào Mở.

Bộ nhớ

Công cụ Bộ nhớ phân loại và hiển thị việc sử dụng bộ nhớ theo thời gian thực. Nó hiển thị việc sử dụng bộ nhớ theo MB của mỗi danh mục và tạo một biểu đồ về sự thay đổi sử dụng theo thời gian.

Để xem cấp phát bộ nhớ:

  1. Mở Bảng điều khiển Nhà phát triển.

  2. Mở rộng menu công cụ để chọn Bộ nhớ.

    Menu thả xuống của tất cả các công cụ Bảng điều khiển Nhà phát triển với tùy chọn Bộ nhớ được làm nổi bật để chọn.
  3. Mở rộng menu client-server để chọn Client hoặc Server.

  4. Duyệt các danh mục và mục sử dụng bộ nhớ. Nếu bạn muốn xem việc sử dụng theo thời gian, hãy mở rộng danh mục để hiển thị một biểu đồ.

    • CoreMemory — Việc sử dụng bộ nhớ bởi các quy trình xây dựng cốt lõi của động cơ, bao gồm mạng, hình đại diện, và các yếu tố GUI mà bạn không có quyền kiểm soát trực tiếp.

    • PlaceMemory — Việc sử dụng bộ nhớ dựa trên cách bạn xây dựng trải nghiệm của mình, bao gồm các mô hình, địa hình, các bộ phận, các script, và tất cả các yếu tố tùy chỉnh khác mà bạn thêm vào trải nghiệm của mình.

      Danh mụcMô tả
      HttpCacheTài sản (hình ảnh, mô hình, v.v.) được tải từ máy chủ Roblox và hiện đang được lưu trong bộ nhớ cache.
      InstancesInstances trong nơi.
      SignalsCác tín hiệu hoạt động giữa các instances (một sự kiện được kích hoạt trên một instance để kích hoạt một sự kiện trên một instance khác).
      LuaHeapBộ nhớ heap cho cả các script cốt lõi (các script được cung cấp với khách hàng Roblox) và các script tùy chỉnh.
      ScriptCác script Luau.
      PhysicsCollisionDữ liệu va chạm cho các mô phỏng vật lý.
      PhysicsPartsHình học vật lý và động lực học.
      GraphicsSolidModelsDữ liệu đồ họa để thực hiện các mô hình rắn.
      GraphicsMeshPartsĐồ họa cho các đối tượng MeshPart.
      GraphicsParticlesĐồ họa cho các hệ thống hạt.
      GraphicsPartsĐồ họa cho các bộ phận.
      GraphicsSpatialHashHiện thị chung.
      GraphicsTerrainĐồ họa cho địa hình.
      GraphicsTextureBộ nhớ kết cấu.
      GraphicsTextureCharacterBộ nhớ kết cấu cho các hình đại diện.
      SoundsCác âm thanh trong bộ nhớ.
      StreamingSoundsCác âm thanh đang phát trực tuyến.
      TerrainVoxelsCác voxel địa hình.
      TerrainPhysicsVật lý địa hình.
      GuiBộ nhớ được sử dụng bởi các yếu tố GUI phổ biến.
      AnimationBộ nhớ được sử dụng cho dữ liệu hoạt hình, chẳng hạn như các tư thế và dữ liệu đã lưu của KeyframeSequence cho các hoạt hình hình đại diện.
      NavigationBộ nhớ được sử dụng bởi các cấu trúc hỗ trợ cho PathfindingService.
    • UntrackedMemory — Các cấp phát bộ nhớ mà hệ thống không thể dễ dàng phân bổ cho một nguồn cụ thể.

    • PlaceScriptMemory — Việc sử dụng bộ nhớ của các script của bạn với các thông tin chi tiết về cách các script cá nhân và các thẻ bộ nhớ tùy chỉnh đóng góp vào việc sử dụng bộ nhớ tổng thể.

    • CoreScriptMemory — Việc sử dụng bộ nhớ bởi các script nội bộ của động cơ mà bạn không có quyền kiểm soát trực tiếp.

    Trong số các danh mục này, PlaceMemoryPlaceScriptMemory là những danh mục quan trọng nhất cho tối ưu hóa hiệu suất, vì chúng giúp bạn hiểu cách mà các lựa chọn xây dựng và lập trình của bạn ảnh hưởng đến việc tiêu thụ bộ nhớ và các khu vực tiềm năng để tối ưu hóa. Để biết thêm thông tin chi tiết về PlaceScriptMemory, hãy sử dụng công cụ Luau heap để tạo các bản chụp và phân tích cấp phát bộ nhớ theo các chỉ số khác nhau.

Luau heap

Công cụ Luau heap cho phép bạn tạo các bản chụp của việc cấp phát bộ nhớ heap hiện tại, đề cập đến bộ nhớ mà các script Luau sử dụng để lưu trữ biến, bảng, hàm và các cấu trúc dữ liệu khác trong thời gian chạy. Công cụ này cung cấp nhiều chế độ xem để giúp bạn xác định các vấn đề từ nhiều góc độ khác nhau, chẳng hạn như các loại đối tượng và lớp động cơ. Nó cũng cho phép bạn tạo nhiều bản chụp để so sánh sự khác biệt trong việc sử dụng bộ nhớ theo thời gian.

Tạo các bản chụp

Để tạo một bản chụp của việc cấp phát bộ nhớ của bạn:

  1. Mở Bảng điều khiển Nhà phát triển.

  2. Mở rộng menu công cụ để chọn LuauHeap.

    Menu thả xuống của tất cả các công cụ Bảng điều khiển Nhà phát triển với tùy chọn LuauHeap được làm nổi bật để chọn.
  3. Mở rộng menu client-server để chọn Client hoặc Server.

  4. Nhấp vào nút Tạo Bản chụp.

Phân tích việc sử dụng bộ nhớ

Công cụ cung cấp nhiều chế độ xem về việc sử dụng bộ nhớ Luau:

  • Đồ thị — Hiển thị một cây sử dụng bộ nhớ tổng hợp, với mỗi nút đại diện cho một đối tượng với bộ nhớ được cấp phát.
  • Thẻ Đối tượng — Hiển thị kích thước bộ nhớ và số lượng theo các loại thời gian chạy, chẳng hạn như function, table, và thread.
  • Danh mục Bộ nhớ — Hiển thị kích thước bộ nhớ và số lượng theo các danh mục bộ nhớ mà động cơ assigned. Động cơ gán một danh mục bộ nhớ cho một đối tượng tại thời điểm cấp phát.
  • Lớp Đối tượng — Hiển thị kích thước bộ nhớ và số lượng theo các lớp động cơ mà các script của bạn sử dụng và lưu trữ các instances của chúng, chẳng hạn như EnumItem, Animation, CFrame. Quan trọng là, chế độ xem này không hiển thị việc sử dụng bộ nhớ bên trong động cơ, chỉ hiển thị bộ nhớ của Luau VM.
  • Tham chiếu Độc nhấtCác Instances Không có Cha — Hiển thị số lượng và tổng số instances cho tham chiếu độc nhất hoặc tất cả các tham chiếu còn lại không có cha trong mô hình dữ liệu và chỉ có thể được truy cập bởi các script. Cũng hiển thị tất cả các đường dẫn cố định đối tượng instance.

Đồ thị

Chế độ xem Đồ thị là chế độ xem chi tiết và phức tạp nhất trong tất cả các chế độ xem của Luau heap. Nó hiển thị một cây sử dụng bộ nhớ tổng hợp với mỗi nút đại diện cho một đối tượng với bộ nhớ được cấp phát. Cây hiển thị cách các đối tượng kết nối với nhau và xác định đường dẫn ngắn nhất giữa các tham chiếu đối tượng. Nó có các cột kích thước bộ nhớ sau:

  • Kích thước — Việc sử dụng bộ nhớ tự thân cộng với việc sử dụng bộ nhớ bởi các nội dung bên trong cấu trúc dữ liệu.
  • Tự thân — Bộ nhớ được cấp phát trực tiếp cho cấu trúc dữ liệu đó, không bao gồm việc sử dụng bộ nhớ bởi bất kỳ nội dung nào mà nó chứa.
Một ví dụ về chế độ xem Đồ thị

Gốc của đồ thị cây là registry, lưu trữ tất cả các tham chiếu động cơ và Luau, chẳng hạn như các hàm kết nối với tín hiệu hoặc thư viện tác vụ, bảng trả về bởi các script module, và các hàm toàn cục, bảng và lớp. Nó thường là cha của các mục phổ biến sau:

  • Module @Path.To.Module là bảng được trả về bởi một script module.
  • name:123 =Path.To.Module là một hàm bên trong một script được chỉ định. Các hàm ẩn danh không có tên. Nút cấp cao nhất thường tham chiếu đến hàm script toàn cục. Ví dụ: :1= Workspace.[Username].Animate.
  • upvalue là một tham chiếu cho các hàm đã được chụp. Xem Chụp phạm vi cục bộ để biết thêm thông tin.
  • env đề cập đến môi trường của một hàm. Trong hầu hết các trường hợp, nó là một bảng đại diện cho phạm vi toàn cục của một script.
  • globals đề cập đến môi trường của một luồng.
  • [key] đại diện cho các đối tượng phục vụ như các khóa bảng.
  • array đại diện cho một mảng.
  • stack đề cập đến mảng lưu trữ tất cả các biến cục bộ của hàm.
  • constants đại diện cho tất cả các giá trị hằng số mà các hàm sử dụng.

Danh mục bộ nhớ

Chế độ xem Danh mục Bộ nhớ hiển thị kích thước bộ nhớ và số lượng theo các danh mục bộ nhớ, mà động cơ gán cho các đối tượng tại thời điểm cấp phát. Theo mặc định, danh mục bộ nhớ có cùng tên với script, hoặc bạn có thể gán tên danh mục bộ nhớ tùy chỉnh bằng cách sử dụng hàm debug.setmemorycategory.

Tham chiếu độc nhất và các instances không có cha

Chế độ xem Tham chiếu Độc nhấtCác Instances Không có Cha có liên quan. Cả hai đều hiển thị việc sử dụng bộ nhớ của các instances không có cha trong mô hình dữ liệu và chỉ có thể được truy cập bởi các script, cùng với tất cả các đường dẫn cố định đối tượng instance. Nếu một instance chỉ được tham chiếu trong các script Luau, nó sẽ xuất hiện dưới Tham chiếu Độc nhất. Ngược lại, nó cũng được sử dụng bởi các hệ thống Roblox và xuất hiện dưới Các Instances Không có Cha. Cả hai chế độ xem đều hiển thị hai chỉ số:

  • Số lượng — Số lượng instances có cùng tên có thể truy cập từ cùng một đường dẫn, chẳng hạn như nhiều instances có tên Dragon trong cùng một bảng.
  • Tổng số Instances — Tổng số các đối tượng bên trong những gốc đó, chẳng hạn như tất cả các phần, script, và đối tượng âm thanh tạo nên một instance Dragon.
Một ví dụ về chế độ xem Tham chiếu Độc nhất

Những chế độ xem này rất hữu ích để xác định các instances kết nối không cần thiết, mà bạn cần phải ngắt kết nối khi không còn cần đến chúng. Nếu bạn thấy nhiều instances không mong đợi trong chế độ xem này, hãy kiểm tra các đường dẫn giữ chúng và đánh giá xem chúng có cần thiết hay không.

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.