Speicherverbrauch

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

Jede Bauelement- und Skriptkomponente, die du zu deiner Erfahrung hinzufügst, verbraucht Speicher.Wenn die Speicherauslastung die Grenzen der Engine erreicht, kann das Gerät oder der Server des Benutzers abstürzen, so dass Sie die Speicherauslastung aktiv überwachen und Maßnahmen zur Optimierung ergreifen müssen. Entwickler-Konsole bietet zwei Werkzeuge zum Überwachen der Speicherverwendung, einschließlich:

  • Speicher — Betrachten Sie den Speicherverbrauch in Echtzeit nach Nutzungskategorien, einschließlich des Speicherverbrauchs durch Ihre benutzerdefinierten Komponenten und interne Prozesse der Engine.

  • Luau-Haufen — Erstellen von Schnappschüssen auf dem Heap-Speicher, der sich auf die Speicherzuweisung für deine Skripte bezieht.Dieses Tool bietet verschiedene Speicherzuweisungsansichten, mit denen Sie die aktuelle Speicherzuweisung und Probleme aus verschiedenen Perspektiven identifizieren können, wie z. B. Objektarten und Engine-Klassen.Es ermöglicht dir auch, mehrere Schnappschüsse zu erstellen, um Unterschiede in der Speicherverwendung im Laufe der Zeit zu vergleichen.

Du kannst die Konsole während einer Test- oder Live-Erfahrungssitzung mit einer der folgenden Methoden öffnen:

  • Drücken Sie F9.
  • Geben Sie /console in den Chat ein.
  • Verwende das In-Experience-Menü:
    1. Öffne das Erlebnis- Roblox-Menü .

    2. Wählen Sie die Einstellungen -Registerkarte.

    3. Scrollen Sie nach unten zu Entwickler-Konsole und klicken Sie auf Öffnen .

Speicher

Das Speicher -Werkzeug kategorisiert und zeigt die Echtzeit-Speicherverwendung an.Es zeigt die Speicherverwendung in MB jeder Kategorie an und erstellt eine Grafik über die Änderung der Nutzung im Laufe der Zeit.

Um die Speicherzuweisung anzuzeigen:

  1. Öffne die Entwickler-Konsole .

  2. Erweitern Sie die Werkzeugauswahl, um Speicher auszuwählen.

    Dropdown menu of all Developer Console tools with the Memory option highlighted for selection.
  3. Erweitern Sie das Client-Server-Dropdown, um Client oder Server auszuwählen.

  4. Durchsuche die Kategorien und Elemente der Speicherverwendung.Für Kategorien oder Artikel, die du die Overtime-Nutzungsmuster sehen möchtest, erweitere die Kategorie, um die Grafik anzuzeigen.

    • Kernspeicher — Speicherverbrauch durch die Kernbausteine der Engine, einschließlich Netzwerk, Avatare und GUI-Elemente (Grafische Benutzeroberfläche), über die Sie keine direkte Kontrolle haben.

    • Platzspeicher — Speicherverbrauch basierend darauf, wie du deine Erlebnisbaust, einschließlich Modelle, Gelände, Teile, Skripte und alle anderen benutzerdefinierten Elemente, die du zu deiner Erlebnishinzufügst.

      KategorieBeschreibung
      HttpCache Assets (Bilder, Meshes usw.), die von Roblox-Servern geladen wurden und jetzt in einem Cache im Speicher gehalten werden.
      Instanzen Instances an der ort.
      Signale Signale, die zwischen Instanzen feuern (ein Ereignis, das auf einer Instanz ausgelöst wird, um ein Ereignis auf einer anderen Instanz auszulösen).
      LuaHeap Haufenspeicher für beide Kernskripte (Skripte, die mit dem Roblox-Client geliefert werden) und benutzerdefinierte Skripte.
      Skript Luau-Skripte.
      Physik-Kollision Kollisionsdaten für Physiksimulationen.
      Physikteile Physik-Geometrie und Kinematik.
      GrafikSolidModelle Grafikdaten, um solide Modelle zu rendern.
      Grafikmesh-Teile Grafik für MeshPart Objekte.
      Grafikpartikel Grafik für Partnersysteme.
      Grafikteile Grafik für Teile.
      Grafikräumliche Hash Allgemeine Rendering.
      Grafikterrain Grafik für das Gelände.
      Grafiktextur Texturen-Speicher.
      Grafiktexturzeichen Texturen-Speicher für Charaktere.
      Geräusche In-Memory-Geräusche.
      StreamingSounds Streaming-Geräusche.
      TerrainVoxel Geländevoxel.
      TerrainPhysik Terrainphysik.
      UI Speicher, der von gemeinsamen GUI-Elementen verwendet wird.
      Animierung Speicher für Animationendaten, wie Posen und KeyframeSequence zwischengespeicherte Daten für Avatar-Animationen.
      Navigation Speicher, der von unterstützenden Strukturen für PathfindingService verwendet wird.
    • UntrackedMemory — Speicherzuweisungen, die das System nicht leicht auf eine bestimmte Ausgangstextzuordnen kann.

    • Platzskriptspeicher — Speicherverbrauch deiner Skripte mit Einsicht in die Art und Weise, wie einzelne Skripte und benutzerdefinierte Speicher标签 zum Gesamtspeicherverbrauch beitragen.

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

    Unter diesen Kategorien sind Platzspeicher und Platzskriptspeicher die wichtigsten für die Leistungsoptimierung, weil sie Ihnen helfen zu verstehen, wie sich Ihre Entscheidungen für Platzierung und Skriptierung auf den Speicherverbrauch und mögliche Optimierungsgebiete auswirken.Für mehr Einblicke in Platzskriptspeicher kannst du das Luau-Speicherwerkzeug verwenden, um Schnappschüsse zu erstellen und die Speicherzuweisung durch verschiedene Metriken zu analysieren.

Luau-Haufen

Das Luau-Speicher-Werkzeug ermöglicht es Ihnen, Schnappschüsse auf die aktuelle Allokation von Heap-Speicher zu erstellen, die sich auf die Speicherzuweisung für Luau-Skripte bezieht, um Variablen, Tabellen, Funktionen und andere Laufzeit-Datenstrukturen zu speichern.Dieses Tool bietet verschiedene Speicherzuweisungsansichten, mit denen Sie Speicherzuweisung und Probleme aus verschiedenen Perspektiven identifizieren können, wie z. B. Objektarten und Engine-Klassen.Es ermöglicht dir auch, mehrere Schnappschüsse zu erstellen, um Unterschiede in der Speicherverwendung im Laufe der Zeit zu vergleichen.

Erstellen von Schnappschüssen

Um einen Schnappschuss Ihrer Speicherzuweisung zu erstellen:

  1. Öffne die Entwickler-Konsole .

  2. Erweitern Sie die Werkzeugauswahl, um LuauHeap auszuwählen.

    Dropdown menu of all Developer Console tools with the LuauHeap option highlighted for selection.
  3. Erweitern Sie das Client-Server-Dropdown, um Client oder Server auszuwählen.

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

Speicherverbrauch analysieren

Das Werkzeug bietet fünf Ansichten, aus denen Sie auswählen können, um Ihre Luau-Speicherzuweisung basierend auf verschiedenen Ansichten anzuzeigen:

  • Grafik — Zeigt einen aggregierten Speicherverbrauchsbaum mit jedem Knoten, der ein Objekt mit zugewiesener Speicher darstellt.
  • Objekt-Tags — Zeigt Speichergrößen und Zählungen durch Laufzeitarten an, wie z. B. function , table und thread .
  • Speicherarten — Zeigt Speichergrößen und Zählungen durch die vom Motor zugewiesenen Speicherarten an.Die Engine weist einer Objekt eine Speicherregion zu, wenn es zugewiesen wird.
  • Objektklassen — Zeigt Speichergrößen und Zählungen durch Engine-Klassen, die Ihre Skripte verwenden und ihre Instanzen speichern, wie z. B. EnumItem , Animation , CFrame .
  • Einzigartige Referenzen — Zeigt die Anzahl der Instanzen an und die Gesamtzahl der Instanzen, die keinen Eltern im Datenmodell haben und nur über Skripte erreichbar sind, zusammen mit allen Pfaden, die das Objektfestlegen.

Grafik

Die Grafik -Ansicht ist die detaillierteste und komplexeste Ansicht unter allen Luau-Heap-Ansichten.Es zeigt einen aggregierten Speicherverbrauchsbaum mit jedem Knoten, der ein Objekt mit zugewiesenem Speicher darstellt.Der Baum zeigt, wie Objekte miteinander verbunden sind und den kürzesten Weg zwischen Objektbezügen berechnet.Es hat die folgenden Speichergrößenkolonnen: Größe — Die Selbstspeicherverwendung plus die Speicherverwendung durch Inhalte innerhalb der Datenstruktur.Selbst — Die Speicher, die direkt für die Datenstruktur selbst zugewiesen ist, mit Ausnahme der Speicherverwendung durch jeden Inhalt, den sie enthält.

An example Graph view

Die Wurzel des Baumdiagramms ist registry, die alle Engine- und Luau-Referenzen speichert, wie Funktionen, die mit Signalen verbunden sind oder die Aufgabenbibliothek, Tabellen, die von Modulskripten zurückgegeben werden, und globale Funktionen, Tabellen und Klassen.Es pflegt in der Regel die folgenden gemeinsamen Einträge:

  • Module @Path.To.Module ist die tabelle, die von einem skript, das. pl: die skriptszurückgegeben wird.
  • name:123 =Path.To.Module ist eine Funktion innerhalb eines bestimmten Skript, das. PL: die Skripts.Anonyme Funktionen haben keine Namen.Der oberste Knoten bezieht sich oft auf die globale Skriptfunktion.Anonyme Funktionen haben keine Namen.Beispiel: :1= Workspace.[Username].Animate.
  • upvalue ist eine Referenz für aufgenommene Funktionen. Siehe Lokalen Umfang einfangen für weitere Informationen.
  • env bezieht sich auf die Umgebung einer Funktion. Für die meisten Fälle ist es eine Tabelle, die den globalen Umfang eines Skript, das. PL: die Skriptsdarstellt.
  • globals bezieht sich auf die umgebung eines threads.
  • [key] repräsentiert objekte, die als tabellenschlüssel dienen.
  • array repräsentiert ein array.
  • stack bezieht sich auf das array, das alle funktionslokale speichert.
  • constants repräsentiert alle konstanten werte, die funktionen verwenden.

Speicher-Kategorien

Die Speicher-Kategorien -Ansicht zeigt Speichergrößen und Zählungen nach Speicher-Kategorien, die die Engine den Objekten bei der Zuweisung zuweist.Standardmäßig hat die Speicher-Kategorie den gleichen Namen wie das Skript, das. PL: die Skripts, oder du kannst benutzerdefinierte Speicher-Kategorie-Namen zuweisen, indem du die debug.setmemorycategory -Funktion verwendest.

Eindeutige Referenzen

Die Einzigartigen Referenzen -Ansicht zeigt die Speicherverwendung von Instanzen, die keinen Eltern im Datenmodell haben und nur über Skripte erreichbar sind, zusammen mit allen Pfaden, die das Objektfestlegen.Diese Ansicht hat zwei Metriken:

  • Zählen — Zeigt die Anzahl der Instanzen mit demselben Namen an, die über denselben Weg erreichbar sind, wie mehrere Instanzen mit dem Namen Dragon in derselben Tabelle.
  • Gesamtinstanzen — Zeigt die Gesamtzahl der Objekte innerhalb dieser Wurzeln an, wie alle Teile, Skripte und Sound-Objekte, die eine Dragon bilden.
An example Unique Reference view

Diese Ansicht ist nützlich für die Identifizierung unnötiger verbundener Instanzen, die Sie trennen müssen, wenn Sie sie nicht mehr benötigen.Wenn du viele unerwartete Instanzen in diesem Ansicht siehst, überprüfe die Pfade, die sie enthalten, und bewerten, ob sie notwendig sind.