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:
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 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:
Otwórz Konsolę Dewelopera.
Rozwiń rozwijane menu narzędzi, aby wybrać Pamięć.

Rozwiń rozwijane menu klient-serwer, aby wybrać Klient lub Serwer.
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.
Odwołanie do PlaceMemoryKategoria Opis HttpCache Aktywa (obrazy, siatki itp.) załadowane z serwerów Roblox i obecnie przechowywane w pamięci podręcznej. Instances Instances w miejscu. Signals Sygnalizacje, które uruchamiają się między instancjami (zdarzenie uruchamiające się w jednej instancji, aby wywołać zdarzenie w innej instancji). LuaHeap Pamięć stosu dla zarówno podstawowych skryptów (skrypty dostarczane z klientem Roblox), jak i skryptów niestandardowych. Script Skrypty Luau. PhysicsCollision Dane kolizji dla symulacji fizycznych. PhysicsParts Geometria i kinetyka fizyki. GraphicsSolidModels Dane graficzne do renderowania modeli stałych. GraphicsMeshParts Dane graficzne dla obiektów MeshPart. GraphicsParticles Dane graficzne dla systemów cząsteczek. 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 do danych animacji, takich jak pozy i dane KeyframeSequence buforowane dla animacji awatarów. Navigation Pamięć 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:
Otwórz Konsolę Dewelopera.
Rozwiń rozwijane menu narzędzi, aby wybrać LuauHeap.

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

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.

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.