Speicherverbrauch

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Jede Bau- und Skriptingkomponente, die Sie zu Ihrer Erfahrung hinzufügen, verbraucht Speicher. Wenn der Speicherverbrauch die Grenzen der Engine erreicht, kann das Gerät oder der Server des Nutzers abstürzen, daher müssen Sie den Verbrauch aktiv überwachen.


Die Entwicklerkonsole bietet zwei Tools zur Überwachung des Speicherverbrauchs:

  • Memory — Anzeigen des aktuellen Speicherverbrauchs nach Verwendungsarten, einschließlich Ihrer benutzerdefinierten Komponenten und der internen Prozesse der Engine.

  • Luau Heap — Erstellen von Snapshots des Heap-Speichers, der sich auf die Speicherauslastung Ihrer Skripte bezieht. Mit diesem Tool können Sie verschiedene Ansichten nutzen, um die aktuelle Speicherauslastung und Probleme aus verschiedenen Perspektiven zu identifizieren, wie z.B. Objektarten und Engine-Klassen. Es ermöglicht Ihnen auch, mehrere Snapshots zu erstellen, um Unterschiede im Speicherverbrauch im Laufe der Zeit zu vergleichen.

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.

Memory

Das Memory-Tool kategorisiert und zeigt den aktuellen Speicherverbrauch in Echtzeit an. Es zeigt den Speicherverbrauch in MB für jede Kategorie und generiert ein Diagramm zur Veränderung des Verbrauchs über die Zeit.

Um die Speicherauslastung anzuzeigen:

  1. Öffnen Sie die Entwicklerkonsole.

  2. Klappen Sie das Dropdown-Menü der Tools aus, um Memory auszuwählen.

    Dropdown-Menü aller Entwicklerkonsole-Tools, wobei die Memory-Option zur Auswahl hervorgehoben ist.
  3. Klappen Sie das Client-Server-Dropdown aus, um Client oder Server auszuwählen.

  4. Durchsuchen Sie die Kategorien und Elemente des Speicherverbrauchs. Wenn Sie den Verbrauch über die Zeit sehen möchten, klappen Sie die Kategorie aus, um ein Diagramm anzuzeigen.

    • CoreMemory — Speicherverbrauch durch die grundlegenden Bauprozesse der Engine, einschließlich Netzwerk, Avatare und GUI-Elementen, über die Sie keine direkte Kontrolle haben.

    • PlaceMemory — Speicherverbrauch basierend auf Ihrer Art, die Erfahrung zu bauen, einschließlich Modelle, Terrain, Teile, Skripte und aller anderen benutzerdefinierten Elemente, die Sie hinzufügen.

      KategorieBeschreibung
      HttpCacheAssets (Bilder, Meshes usw.), die von Roblox-Servern geladen und jetzt im Speicher in einem Cache gehalten werden.
      InstancesInstances im Ort.
      SignalsSignale, die zwischen Instanzen ausgelöst werden (ein Ereignis, das auf einer Instanz ausgelöst wird, um ein Ereignis auf einer anderen Instanz auszulösen).
      LuaHeapHeap-Speicher für sowohl Core-Skripte (Skripte, die mit dem Roblox-Client ausgeliefert werden) als auch benutzerdefinierte Skripte.
      ScriptLuau-Skripte.
      PhysicsCollisionKollisionsdaten für Physiksimulationen.
      PhysicsPartsPhysikalische Geometrie und Kinetik.
      GraphicsSolidModelsGrafikdaten zum Rendern fester Modelle.
      GraphicsMeshPartsGrafik für MeshPart-Objekte.
      GraphicsParticlesGrafik für Partikelsysteme.
      GraphicsPartsGrafik für Teile.
      GraphicsSpatialHashAllgemeines Rendering.
      GraphicsTerrainGrafik für Terrain.
      GraphicsTextureTexturspeicher.
      GraphicsTextureCharacterTexturspeicher für Charaktere.
      SoundsIm-Speicher-Sounds.
      StreamingSoundsStreaming-Sounds.
      TerrainVoxelsTerrain-VoXels.
      TerrainPhysicsTerrain-Physik.
      GuiSpeicher, der von gängigen GUI-Elementen verwendet wird.
      AnimationSpeicher, der für Animationsdaten verwendet wird, wie Posen und KeyframeSequence-Cache-Daten für Avatar-Animationen.
      NavigationSpeicher für unterstützende Strukturen für PathfindingService.
    • UntrackedMemory — Speicheralokationen, die das System nicht leicht einer bestimmten Quelle zuordnen kann.

    • PlaceScriptMemory — Speicherverbrauch Ihrer Skripte mit Einblicken, wie einzelne Skripte und benutzerdefinierte Speichertags zum Gesamtspeicherverbrauch beitragen.

    • CoreScriptMemory — Speicherverbrauch durch interne Engine-Skripte, über die Sie keine direkte Kontrolle haben.

    Unter diesen Kategorien sind PlaceMemory und PlaceScriptMemory die wichtigsten für die Leistungsoptimierung, da sie Ihnen helfen zu verstehen, wie Ihre Bau- und Skriptingentscheidungen den Speicherverbrauch und mögliche Optimierungsbereiche beeinflussen. Für weitere Einblicke in PlaceScriptMemory verwenden Sie das Luau Heap-Tool, um Snapshots zu erstellen und die Speicherauslastung nach verschiedenen Metriken zu analysieren.

Luau Heap

Das Luau Heap-Tool ermöglicht es Ihnen, Snapshots der aktuellen Zuweisung des Heap-Speichers zu erstellen, der sich auf den Speicher bezieht, den Luau-Skripte zur Speicherung von Variablen, Tabellen, Funktionen und anderen Laufzeitdatenstrukturen verwenden. Dieses Tool bietet verschiedene Ansichten, um Probleme aus unterschiedlichen Perspektiven zu identifizieren, wie z.B. Objektarten und Engine-Klassen. Es ermöglicht Ihnen auch, mehrere Snapshots zu erstellen, um Unterschiede im Speicherverbrauch im Laufe der Zeit zu vergleichen.

Snapshots erstellen

Um einen Snapshot Ihrer Speicherauslastung zu erstellen:

  1. Öffnen Sie die Entwicklerkonsole.

  2. Klappen Sie das Dropdown-Menü der Tools aus, um LuauHeap auszuwählen.

    Dropdown-Menü aller Entwicklerkonsole-Tools, wobei die LuauHeap-Option zur Auswahl hervorgehoben ist.
  3. Klappen Sie das Client-Server-Dropdown aus, um Client oder Server auszuwählen.

  4. Klicken Sie auf die Schaltfläche Snapshot erstellen.

Speicherverbrauch analysieren

Das Tool bietet viele Ansichten zum Luau-Speicherverbrauch:

  • Graph — Zeigt einen aggregierten Speicherverbrauchsbaum an, wobei jeder Knoten ein Objekt mit zugewiesenem Speicher darstellt.
  • Objekt-Tags — Zeigt Speichergrößen und -anzahlen nach Laufzeittypen, wie function, table und thread, an.
  • Speicherkategorien — Zeigt Speichergrößen und -anzahlen nach von der Engine zugewiesenen Speicherkategorien an. Die Engine weist einem Objekt bei der Zuweisung eine Speicherkategorie zu.
  • Objektklassen — Zeigt Speichergrößen und -anzahlen nach Engine-Klassen, die Ihre Skripte verwenden und deren Instanzen speichern, wie EnumItem, Animation, CFrame. Kritisch: Diese Ansicht zeigt keinen Speicherverbrauch innerhalb der Engine selbst, nur der Luau-VM.
  • Einzigartige Referenzen und Ungeparentete Instanzen — Zeigt die Mengen und Gesamtzahlen der Instanzen für einzigartige Referenzen oder alle verbleibenden Referenzen, die kein Elternteil im Datenmodell haben und nur durch Skripte erreichbar sind. Zeigt auch alle Pfade, die das Instanzobjekt fixieren.

Graph

Die Ansicht Graph ist die detaillierteste und komplexeste Ansicht unter allen Luau-Heap-Ansichten. Sie zeigt einen aggregierten Speicherverbrauchsbaum an, wobei jeder Knoten ein Objekt mit zugewiesenem Speicher darstellt. Der Baum zeigt, wie Objekte miteinander verbunden sind, und leitet den kürzesten Pfad zwischen Objektverweisen ab. Er enthält folgende Spalten für die Speichergröße:

  • Größe — Der Selbstspeicherverbrauch plus der Speicherverbrauch durch Inhalte innerhalb der Datentruktur.
  • Selbst — Der Speicher, der direkt für die Datentruktur selbst zugewiesen wurde, ohne den Speicherverbrauch durch jegliche Inhalte, die sie enthält.
Ein Beispiel für die Graphansicht

Der Wurzelknoten des Baumdiagramms ist registry, der alle Engine- und Luau-Referenzen speichert, wie Funktionen, die mit Signalen oder der Aufgabenbibliothek verbunden sind, Tabellen, die von Modulscripts zurückgegeben werden, und globale Funktionen, Tabellen und Klassen. Er hat normalerweise folgende gemeinsame Einträge als Eltern:

  • Module @Path.To.Module ist die Tabelle, die von einem Modulscripte zurückgegeben wird.
  • name:123 =Path.To.Module ist eine Funktion innerhalb eines bestimmten Skripts. Anonyme Funktionen haben keine Namen. Der oberste Knoten verweist oft auf die globale Skriptingfunktion. Beispiel: :1= Workspace.[Benutzername].Animate.
  • upvalue ist eine Referenz auf erfasste Funktionen. Siehe Lokalen Bereich erfassen für weitere Informationen.
  • env bezieht sich auf die Umgebung einer Funktion. In den meisten Fällen ist es eine Tabelle, die den globalen Geltungsbereich eines Skripts darstellt.
  • globals bezieht sich auf die Umgebung eines Threads.
  • [key] repräsentiert Objekte, die als Tabellenschlüssel dienen.
  • array stellt ein Array dar.
  • stack bezieht sich auf das Array, das alle lokalen Funktionen speichert.
  • constants repräsentiert alle konstanten Werte, die Funktionen verwenden.

Speicherkategorien

Die Ansicht Speicherkategorien zeigt Speichergrößen und -anzahlen nach Speicherkategorien an, die die Engine Objekten bei der Zuweisung zuweist. Standardmäßig hat die Speicherkategorie denselben Namen wie das Skript, oder Sie können benutzerdefinierte Speicherkategorienamen mit der Funktion debug.setmemorycategory zuweisen.

Einzigartige Referenzen und ungeparentete Instanzen

Die Ansichten Einzigartige Referenzen und Ungeparentete Instanzen sind miteinander verwandt. Beide zeigen den Speicherverbrauch von Instanzen, die kein Elternteil im Datenmodell haben und nur durch Skripte erreichbar sind, zusammen mit allen Pfaden, die das Instanzobjekt fixieren. Wenn eine Instanz nur innerhalb von Luau-Skripten referenziert wird, erscheint sie unter Einzigartige Referenzen. Andernfalls wird sie auch von Roblox-Systemen verwendet und erscheint unter Ungeparentete Instanzen. Beide Ansichten zeigen zwei Metriken:

  • Anzahl — Die Anzahl der Instanzen mit demselben Namen, die von demselben Pfad aus erreichbar sind, wie mehrere Instanzen mit dem Namen Dragon in derselben Tabelle.
  • Gesamtinstanzen — Die Gesamtanzahl der Objekte innerhalb dieser Wurzeln, wie alle Teile, Skripte und Soundobjekte, die eine Dragon-Instanz konstruieren.
Ein Beispiel für die Ansicht Einzigartige Referenz

Diese Ansichten sind nützlich, um unnötig verbundene Instanzen zu identifizieren, die Sie trennen müssen, wenn Sie sie nicht mehr benötigen. Wenn Sie viele unerwartete Instanzen in dieser Ansicht sehen, prüfen Sie die sie haltenden Pfade und beurteilen Sie, ob sie notwendig sind.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.