Użycie pamięci

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Każdy element budowlany i skryptowy, który dodajesz do swojej gry, zużywa pamięć. Gdy użycie pamięci osiągnie limity silnika, urządzenie użytkownika lub serwer mogą się zawiesić, dlatego musisz aktywnie monitorować zużycie.


Konsola Dewelopera oferuje dwa narzędzia do monitorowania użycia pamięci:

  • Pamięć — Zobacz zużycie pamięci w czasie rzeczywistym według kategorii użycia, w tym własnych komponentów i wewnętrznych procesów silnika.

  • Stos Luau — Twórz zrzuty pamięci stosu, które odnoszą się do alokacji pamięci twoich skryptów. To narzędzie oferuje kilka widoków, które pomogą ci zidentyfikować bieżącą alokację pamięci i problemy z różnych perspektyw, takich jak typy obiektów i klasy silnika. Umożliwia również tworzenie wielu zrzutów, aby porównać różnice w użyciu pamięci w czasie.

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.

Pamięć

Narzędzie Pamięć kategoryzuje i wyświetla zużycie pamięci w czasie rzeczywistym. Wyświetla zużycie pamięci w MB dla każdej kategorii i generuje wykres zmian zużycia w czasie.

Aby zobaczyć alokację pamięci:

  1. Otwórz Konsolę Dewelopera.

  2. Rozwiń rozwijane menu narzędzi, aby wybrać Pamięć.

    Menu rozwijane wszystkich narzędzi Konsoli Dewelopera z opcją Pamięć wyróżnioną do wyboru.
  3. Rozwiń rozwijane menu klient-serwer, aby wybrać Klient lub Serwer.

  4. Przeglądaj kategorie i elementy użycia pamięci. Jeśli chcesz zobaczyć zużycie w czasie, rozwiń kategorię, aby wyświetlić wykres.

    • CoreMemory — Zużycie pamięci przez podstawowe procesy budowlane silnika, w tym sieci, awatary i elementy GUI, nad którymi nie masz bezpośredniej kontroli.

    • PlaceMemory — Zużycie pamięci w oparciu o to, jak budujesz swoją grę, w tym modele, teren, części, skrypty i wszystkie inne elementy niestandardowe, które dodajesz do swojej gry.

      KategoriaOpis
      HttpCacheAktywa (obrazy, siatki itp.) załadowane z serwerów Roblox i obecnie przechowywane w pamięci podręcznej.
      InstancesInstances w miejscu.
      SignalsSygnalizacje, które uruchamiają się między instancjami (zdarzenie uruchamiające się w jednej instancji, aby wywołać zdarzenie w innej instancji).
      LuaHeapPamięć stosu dla zarówno podstawowych skryptów (skrypty dostarczane z klientem Roblox), jak i skryptów niestandardowych.
      ScriptSkrypty Luau.
      PhysicsCollisionDane kolizji dla symulacji fizycznych.
      PhysicsPartsGeometria i kinetyka fizyki.
      GraphicsSolidModelsDane graficzne do renderowania modeli stałych.
      GraphicsMeshPartsDane graficzne dla obiektów MeshPart.
      GraphicsParticlesDane graficzne dla systemów cząsteczek.
      GraphicsPartsDane graficzne dla części.
      GraphicsSpatialHashOgólne renderowanie.
      GraphicsTerrainDane graficzne dla terenu.
      GraphicsTexturePamięć tekstur.
      GraphicsTextureCharacterPamięć tekstur dla postaci.
      SoundsDźwięki w pamięci.
      StreamingSoundsDźwięki strumieniowe.
      TerrainVoxelsWoksele terenu.
      TerrainPhysicsFizyka terenu.
      GuiPamięć używana przez wspólne elementy GUI.
      AnimationPamięć używana do danych animacji, takich jak pozy i dane KeyframeSequence buforowane dla animacji awatarów.
      NavigationPamięć używana przez struktury wspierające dla PathfindingService.
    • UntrackedMemory — Alokacje pamięci, które system nie może łatwo przypisać do konkretnego źródła.

    • PlaceScriptMemory — Zużycie pamięci przez twoje skrypty z wglądem w to, jak poszczególne skrypty i niestandardowe tagi pamięci przyczyniają się do ogólnego zużycia pamięci.

    • CoreScriptMemory — Zużycie pamięci przez wewnętrzne skrypty silnika, nad którymi nie masz bezpośredniej kontroli.

    Spośród tych kategorii, PlaceMemory i PlaceScriptMemory są najważniejsze dla optymalizacji wydajności, ponieważ pomagają zrozumieć, jak twoje wybory budowlane i skryptowe wpływają na zużycie pamięci oraz potencjalne obszary do optymalizacji. Aby uzyskać więcej informacji na temat PlaceScriptMemory, użyj narzędzia Stos Luau, aby tworzyć zrzuty i analizować alokację pamięci według różnych metryk.

Stos Luau

Narzędzie Stos Luau pozwala na tworzenie zrzutów bieżącej alokacji pamięci stosu, która odnosi się do pamięci, którą skrypty Luau używają do przechowywania zmiennych, tabel, funkcji i innych struktur danych w czasie wykonywania. To narzędzie oferuje kilka widoków, które pomogą ci zidentyfikować problemy z różnych perspektyw, takich jak typy obiektów i klasy silnika. Umożliwia również tworzenie wielu zrzutów, aby porównać różnice w użyciu pamięci w czasie.

Tworzenie zrzutów

Aby utworzyć zrzut alokacji pamięci:

  1. Otwórz Konsolę Dewelopera.

  2. Rozwiń rozwijane menu narzędzi, aby wybrać LuauHeap.

    Menu rozwijane wszystkich narzędzi Konsoli Dewelopera z opcją LuauHeap wyróżnioną do wyboru.
  3. Rozwiń rozwijane menu klient-serwer, aby wybrać Klient lub Serwer.

  4. Kliknij przycisk Utwórz zrzut.

Analiza użycia pamięci

Narzędzie oferuje wiele widoków dotyczących użycia pamięci Luau:

  • Wykres — Pokazuje zgrupowane drzewo użycia pamięci, gdzie każdy węzeł reprezentuje obiekt z przydzieloną pamięcią.
  • Tagi obiektów — Pokazuje rozmiary pamięci i liczby według typów w czasie wykonywania, takich jak function, table i thread.
  • Kategorie pamięci — Pokazuje rozmiary pamięci i liczby według kategorii pamięci przypisanych przez silnik. Silnik przypisuje kategorię pamięci do obiektu w momencie alokacji.
  • Klasy obiektów — Pokazuje rozmiary pamięci i liczby według klas silnika, które twoje skrypty używają i przechowują ich instancje, takich jak EnumItem, Animation, CFrame. Krytycznie, ten widok nie pokazuje użycia pamięci wewnątrz silnika, tylko wirtualnej maszyny Luau.
  • Unikalne odniesienia i Instancje bez rodzica — Pokazuje liczby i całkowite liczby instancji dla unikalnych odniesień lub wszystkich pozostałych odniesień, które nie mają rodzica w modelu danych i są osiągalne tylko przez skrypty. Pokazuje również wszystkie ścieżki, które przypinają obiekt instancji.

Wykres

Widok Wykres jest najbardziej szczegółowym i złożonym widokiem spośród wszystkich widoków stosu Luau. Pokazuje zgrupowane drzewo użycia pamięci, gdzie każdy węzeł reprezentuje obiekt z przydzieloną pamięcią. Drzewo pokazuje, jak obiekty łączą się ze sobą i wyprowadza najkrótszą ścieżkę między odniesieniami obiektów. Ma następujące kolumny rozmiaru pamięci:

  • Rozmiar — Użycie pamięci samego obiektu plus użycie pamięci przez zawartość w strukturze danych.
  • Sam — Pamięć bezpośrednio przydzielona dla samej struktury danych, z wyłączeniem użycia pamięci przez jakąkolwiek zawartość, którą zawiera.
Przykład widoku Wykres

Korzeń drzewa wykresu to registry, który przechowuje wszystkie odniesienia silnika i Luau, takie jak funkcje połączone z sygnałami lub biblioteką zadań, tabele zwracane przez skrypty modułowe oraz globalne funkcje, tabele i klasy. Zwykle rodzicami są następujące wspólne wpisy:

  • Module @Path.To.Module to tabela zwracana przez skrypt modułowy.
  • name:123 =Path.To.Module to funkcja wewnątrz określonego skryptu. Funkcje anonimowe nie mają nazw. Węzeł na najwyższym poziomie często odnosi się do globalnej funkcji skryptu. Przykład: :1= Workspace.[Username].Animate.
  • upvalue to odniesienie do uchwyconych funkcji. Zobacz Uchwycenie lokalnego zakresu po więcej informacji.
  • env odnosi się do środowiska funkcji. W większości przypadków jest to tabela reprezentująca globalny zakres skryptu.
  • globals odnosi się do środowiska wątku.
  • [key] reprezentuje obiekty, które służą jako klucze tabeli.
  • array reprezentuje tablicę.
  • stack odnosi się do tablicy, która przechowuje wszystkie lokalne funkcji.
  • constants reprezentuje wszystkie stałe wartości, które funkcje używają.

Kategorie pamięci

Widok Kategorie pamięci pokazuje rozmiary pamięci i liczby według kategorii pamięci, które silnik przypisuje obiektom w momencie alokacji. Domyślnie kategoria pamięci ma tę samą nazwę co skrypt, lub możesz przypisać niestandardowe nazwy kategorii pamięci, używając funkcji debug.setmemorycategory.

Unikalne odniesienia i instancje bez rodzica

Widoki Unikalne odniesienia i Instancje bez rodzica są ze sobą powiązane. Oba pokazują użycie pamięci instancji, które nie mają rodzica w modelu danych i są osiągalne tylko przez skrypty, wraz ze wszystkimi ścieżkami, które przypinają obiekt instancji. Jeśli instancja jest odniesiona tylko w skryptach Luau, pojawia się pod Unikalnymi odniesieniami. W przeciwnym razie jest również używana przez systemy Roblox i pojawia się pod Instancjami bez rodzica. Oba widoki pokazują dwie metryki:

  • Liczba — Liczba instancji o tej samej nazwie, które są osiągalne z tej samej ścieżki, takie jak wiele instancji nazwanych Dragon w tej samej tabeli.
  • Całkowite instancje — Całkowita liczba obiektów w tych korzeniach, takich jak wszystkie części, skrypty i obiekty dźwiękowe, które tworzą instancję Dragon.
Przykład widoku Unikalne odniesienie

Te widoki są przydatne do identyfikacji niepotrzebnych połączonych instancji, które musisz odłączyć, gdy już ich nie potrzebujesz. Jeśli widzisz wiele nieoczekiwanych instancji w tym widoku, sprawdź ścieżki, które je trzymają, i oceń, czy są konieczne.

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.