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 dodasz do swojego doświadczenia, 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ć użycie pamięci.


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

  • Pamięć — Wyświetlaj rzeczywiste zużycie pamięci według kategorii, w tym własnych komponentów oraz procesów wewnętrznych silnika.

  • Stos Luau — Twórz zrzuty pamięci stosu, które odnoszą się do przydziału pamięci Twoich skryptów. To narzędzie zapewnia kilka widoków, które pomogą Ci zidentyfikować aktualny przydział pamięci i problemy z różnych perspektyw, takich jak typy obiektów i klasy silnika. Pozwala również na tworzenie wielu zrzutów do porównania zmian 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 rzeczywiste użycie pamięci. Wyświetla zużycie pamięci w MB dla każdej kategorii oraz generuje wykres zmian użycia w czasie.

Aby wyświetlić przydział pamięci:

  1. Otwórz Konsolę Dewelopera.

  2. Rozwiń rozwijane menu narzędzi i wybierz Pamięć.

    Menu rozwijane wszystkich narzędzi Konsoli Dewelopera z wyróżnioną opcją Pamięć 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ć użycie w czasie, rozwiń kategorię, aby wyświetlić wykres.

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

    • PlaceMemory — Użycie pamięci w oparciu o to, jak budujesz swoje doświadczenie, w tym modele, teren, części, skrypty i wszystkie inne elementy dostosowane, które dodajesz do swojego doświadczenia.

      KategoriaOpis
      HttpCacheZasoby (obrazy, siatki itp.) załadowane z serwerów Roblox i obecnie przechowywane w pamięci podręcznej.
      InstancesInstances w danym miejscu.
      SignalsSygnalizacje, które wyzwalają się między instancjami (zdarzenie wyzwalające na jednej instancji, aby uruchomić zdarzenie na innej instancji).
      LuaHeapPamięć stosu zarówno dla skryptów podstawowych (skrypty, które są dostarczane z klientem Roblox), jak i skryptów dostosowanych.
      ScriptSkrypty Luau.
      PhysicsCollisionDane kolizji dla symulacji fizycznych.
      PhysicsPartsGeometria fizyczna i kinetyka.
      GraphicsSolidModelsDane graficzne do renderowania solidnych modeli.
      GraphicsMeshPartsDane graficzne dla obiektów MeshPart.
      GraphicsParticlesDane graficzne dla systemów cząsteczkowych.
      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 na dane animacji, takie jak pozy i zwracane dane KeyframeSequence dla animacji awatarów.
      NavigationPamięć używana przez struktury wspierające PathfindingService.
    • UntrackedMemory — Przydziały pamięci, które system nie może łatwo przypisać do określonego źródła.

    • PlaceScriptMemory — Użycie pamięci Twoich skryptów z wglądem w to, jak poszczególne skrypty i niestandardowe etykiety pamięci przyczyniają się do ogólnego użycia pamięci.

    • CoreScriptMemory — Uż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żniejszymi dla optymalizacji wydajności, ponieważ pomagają Ci zrozumieć, jak Twoje wybory budowlane i skryptowe wpływają na zużycie pamięci i potencjalne obszary do optymalizacji. Aby uzyskać więcej informacji na temat PlaceScriptMemory, użyj narzędzia Stos Luau, aby utworzyć zrzuty i przeanalizować przydział pamięci według różnych metryk.

Stos Luau

Narzędzie Stos Luau pozwala na tworzenie zrzutów aktualnego przydziału pamięci stosu, co odnosi się do pamięci, jaką skrypty Luau wykorzystują do przechowywania zmiennych, tabel, funkcji i innych struktur danych w czasie wykonywania. To narzędzie zapewnia kilka widoków, które pomogą Ci zidentyfikować problemy z różnych perspektyw, takich jak typy obiektów i klasy silnika. Pozwala również na tworzenie wielu zrzutów do porównania zmian w użyciu pamięci w czasie.

Tworzenie zrzutów

Aby utworzyć zrzut swojego przydziału pamięci:

  1. Otwórz Konsolę Dewelopera.

  2. Rozwiń rozwijane menu narzędzi i wybierz LuauHeap.

    Menu rozwijane wszystkich narzędzi Konsoli Dewelopera z wyróżnioną opcją LuauHeap 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 zapewnia wiele widoków dotyczących użycia pamięci Luau:

  • Wykres — Pokazuje zagregowane drzewo użycia pamięci, w którym każdy węzeł reprezentuje obiekt z przydzieloną pamięcią.
  • Etykiety obiektów — Pokazuje rozmiary i liczby pamięci według typów uruchomieniowych, 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 obiektowi w czasie przydziału.
  • Klasy obiektów — Pokazuje rozmiary pamięci i liczby według klas silnika, które Twoje skrypty wykorzystują i przechowują ich instancje, takie jak EnumItem, Animation, CFrame. Krytycznie, ten widok nie pokazuje zużycia pamięci wewnątrz silnika, tylko VM Luau.
  • Unikalne Referencje oraz Instancje bez rodzica — Pokazuje liczby i całkowite liczby instancji dla unikalnych referencji lub wszystkich pozostałych referencji, które nie mają rodzica w modelu danych i są osiągalne tylko przez skrypty. Pokazuje również wszystkie ścieżki, które przytrzymują obiekt instancji.

Wykres

Widok Wykres jest najbardziej szczegółowym i skomplikowanym widokiem spośród wszystkich widoków stosu Luau. Wyświetla zagregowane drzewo użycia pamięci, w którym każdy węzeł reprezentuje obiekt z przydzieloną pamięcią. Drzewo pokazuje, jak obiekty są połączone ze sobą i wydobywa najkrótszą ścieżkę między referencjami 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 struktury danych.
  • Sam — Pamięć bezpośrednio przydzielona dla samej struktury danych, wyłączając użycie pamięci przez wszelką zawartość, którą zawiera.
Przykład widoku Wykresu

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

  • Module @Path.To.Module jest tabelą zwracaną przez skrypt modułowy.
  • name:123 =Path.To.Module jest funkcją wewnątrz określonego skryptu. Funkcje anonimowe nie mają nazw. Węzeł na najwyższym poziomie odnosi się zwykle do globalnej funkcji skryptu. Przykład: :1= Workspace.[Username].Animate.
  • upvalue jest referencją dla funkcji przechwyconych. Zobacz Przechwytywanie lokalnego zasięgu w celu uzyskania dalszych informacji.
  • env odnosi się do środowiska funkcji. W większości przypadków jest to tabela reprezentująca globalny zasięg 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 używają funkcje.

Kategorie pamięci

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

Unikalne referencje i instancje bez rodzica

Widoki Unikalne Referencje 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 przytrzymują obiekt instancji. Jeśli instancja jest odniesiona tylko w skryptach Luau, pojawia się pod Unikalnymi Referencjami. 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, np. wiele instancji o nazwie 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 Unikalnej Referencji

Te widoki są przydatne do identyfikacji zbędnych połączonych instancji, które musisz odłączyć, gdy już ich nie potrzebujesz. Jeśli widzisz wiele niespodziewanych instancji w tym widoku, sprawdź ścieżki, które je przytrzymują i oceniaj, czy są potrzebne.

©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.