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

Select the Settings tab.
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:
Otwórz Konsolę Dewelopera.
Rozwiń rozwijane menu narzędzi i wybierz Pamięć.

Rozwiń rozwijane menu klient-serwer, aby wybrać Klient lub Serwer.
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.
Referencje Pamięci MiejscaKategoria Opis HttpCache Zasoby (obrazy, siatki itp.) załadowane z serwerów Roblox i obecnie przechowywane w pamięci podręcznej. Instances Instances w danym miejscu. Signals Sygnalizacje, które wyzwalają się między instancjami (zdarzenie wyzwalające na jednej instancji, aby uruchomić zdarzenie na innej instancji). LuaHeap Pamięć stosu zarówno dla skryptów podstawowych (skrypty, które są dostarczane z klientem Roblox), jak i skryptów dostosowanych. Script Skrypty Luau. PhysicsCollision Dane kolizji dla symulacji fizycznych. PhysicsParts Geometria fizyczna i kinetyka. GraphicsSolidModels Dane graficzne do renderowania solidnych modeli. GraphicsMeshParts Dane graficzne dla obiektów MeshPart. GraphicsParticles Dane graficzne dla systemów cząsteczkowych. GraphicsParts Dane graficzne dla części. GraphicsSpatialHash Ogólne renderowanie. GraphicsTerrain Dane graficzne dla terenu. GraphicsTexture Pamięć tekstur. GraphicsTextureCharacter Pamięć tekstur dla postaci. Sounds Dźwięki w pamięci. StreamingSounds Dźwięki strumieniowe. TerrainVoxels Woksele terenu. TerrainPhysics Fizyka terenu. Gui Pamięć używana przez wspólne elementy GUI. Animation Pamięć używana na dane animacji, takie jak pozy i zwracane dane KeyframeSequence dla animacji awatarów. Navigation Pamięć 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:
Otwórz Konsolę Dewelopera.
Rozwiń rozwijane menu narzędzi i wybierz LuauHeap.

Rozwiń rozwijane menu klient-serwer, aby wybrać Klient lub Serwer.
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.

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.

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.