Utilizzo della memoria

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Ogni componente di costruzione e scripting che aggiungi alla tua esperienza consuma memoria. Quando l'utilizzo della memoria raggiunge i limiti del motore, il dispositivo o il server dell'utente possono bloccarsi, quindi è necessario monitorare attivamente l'utilizzo.


La Console dello Sviluppatore fornisce due strumenti per monitorare l'utilizzo della memoria:

  • Memoria — Visualizza il consumo di memoria in tempo reale suddiviso per categorie di utilizzo, inclusi i tuoi componenti personalizzati e i processi interni del motore.

  • Heap di Luau — Crea snapshot della memoria heap, che si riferisce all'allocazione di memoria dei tuoi script. Questo strumento fornisce diverse visualizzazioni per aiutarti a identificare l'allocazione di memoria attuale e i problemi da diverse prospettive, come i tipi di oggetti e le classi del motore. Ti consente anche di creare più snapshot per confrontare le differenze nell'utilizzo della memoria nel tempo.

Puoi aprire la console durante una sessione di gioco di testing o dal vivo utilizzando uno dei seguenti metodi:

  • Premi F9.
  • Digita /console nella chat.
  • Usa il menu di gioco:
    1. Apri il Menu Roblox in gioco.

    2. Seleziona la scheda Impostazioni.

    3. Scorri verso il basso fino a Console per Sviluppatori e clicca su Apri.

Memoria

Lo strumento Memoria categoriza e visualizza l'utilizzo della memoria in tempo reale. Mostra l'utilizzo della memoria in MB per ogni categoria e genera un grafico sui cambiamenti di utilizzo nel tempo.

Per visualizzare l'allocazione della memoria:

  1. Apri la Console dello Sviluppatore.

  2. Espandi il menu a discesa degli strumenti per selezionare Memoria.

    Menu a discesa di tutti gli strumenti della Console dello Sviluppatore con l'opzione Memoria evidenziata per la selezione.
  3. Espandi il menu a discesa client-server per selezionare Client o Server.

  4. Sfoglia le categorie e gli elementi di utilizzo della memoria. Se desideri vedere l'utilizzo nel tempo, espandi la categoria per visualizzare un grafico.

    • CoreMemory — Utilizzo della memoria dai processi di costruzione fondamentali del motore, inclusi networking, avatar ed elementi GUI su cui non hai controllo diretto.

    • PlaceMemory — Utilizzo della memoria basato su come costruisci la tua esperienza, inclusi modelli, terreno, parti, script e tutti gli altri elementi personalizzati che aggiungi alla tua esperienza.

      CategoriaDescrizione
      HttpCacheAsset (immagini, mesh, ecc.) caricati dai server di Roblox e ora memorizzati in una cache in memoria.
      InstancesInstances nel luogo.
      SignalsSegnali che si attivano tra le istanze (un evento che si attiva su un'istanza per attivare un evento su un'altra istanza).
      LuaHeapMemoria heap per script core (script forniti con il client di Roblox) e script personalizzati.
      ScriptScript Luau.
      PhysicsCollisionDati di collisione per simulazioni fisiche.
      PhysicsPartsGeometria e cinetica fisica.
      GraphicsSolidModelsDati grafici per rendere modelli solidi.
      GraphicsMeshPartsGrafica per oggetti MeshPart.
      GraphicsParticlesGrafica per sistemi di particelle.
      GraphicsPartsGrafica per parti.
      GraphicsSpatialHashRendering generale.
      GraphicsTerrainGrafica per il terreno.
      GraphicsTextureMemoria delle texture.
      GraphicsTextureCharacterMemoria delle texture per i personaggi.
      SoundsSuoni in memoria.
      StreamingSoundsSuoni in streaming.
      TerrainVoxelsVoxels del terreno.
      TerrainPhysicsFisica del terreno.
      GuiMemoria utilizzata dai comuni elementi GUI.
      AnimationMemoria utilizzata per i dati di animazione, come pose e dati KeyframeSequence memorizzati per le animazioni degli avatar.
      NavigationMemoria utilizzata dalle strutture di supporto per PathfindingService.
    • UntrackedMemory — Allocazioni di memoria che il sistema non può facilmente attribuire a una fonte particolare.

    • PlaceScriptMemory — Utilizzo della memoria dei tuoi script con informazioni su come script individuali e tag di memoria personalizzati contribuiscono all'utilizzo complessivo della memoria.

    • CoreScriptMemory — Utilizzo della memoria da parte di script interni del motore su cui non hai controllo diretto.

    Tra queste categorie, PlaceMemory e PlaceScriptMemory sono quelle più importanti per l'ottimizzazione delle prestazioni, perché ti aiutano a capire come le tue scelte di costruzione e scripting influiscono sul consumo della memoria e su potenziali aree di ottimizzazione. Per ulteriori informazioni su PlaceScriptMemory, utilizza lo strumento Luau heap per creare snapshot e analizzare l'allocazione della memoria in base a diverse metriche.

Heap di Luau

Lo strumento Heap di Luau ti consente di creare snapshot dell'allocazione attuale della memoria heap, che si riferisce alla memoria utilizzata dagli script Luau per memorizzare variabili, tabelle, funzioni e altre strutture di dati in fase di esecuzione. Questo strumento fornisce diverse visualizzazioni per aiutarti a identificare i problemi da diverse prospettive, come i tipi di oggetti e le classi del motore. Ti consente anche di creare più snapshot per confrontare le differenze nell'utilizzo della memoria nel tempo.

Creare snapshot

Per creare uno snapshot della tua allocazione di memoria:

  1. Apri la Console dello Sviluppatore.

  2. Espandi il menu a discesa degli strumenti per selezionare LuauHeap.

    Menu a discesa di tutti gli strumenti della Console dello Sviluppatore con l'opzione LuauHeap evidenziata per la selezione.
  3. Espandi il menu a discesa client-server per selezionare Client o Server.

  4. Clicca sul pulsante Crea Snapshot.

Analizzare l'utilizzo della memoria

Lo strumento fornisce molte viste sull'utilizzo della memoria Luau:

  • Grafico — Mostra un albero aggregato dell'utilizzo della memoria, con ciascun nodo che rappresenta un oggetto con memoria allocata.
  • Tag Oggetto — Mostra dimensioni e conteggi di memoria per tipi di runtime, come function, table e thread.
  • Categorie di Memoria — Mostra dimensioni e conteggi di memoria per categorie di memoria assegnate dal motore. Il motore assegna una categoria di memoria a un oggetto al momento dell'allocazione.
  • Classi di Oggetti — Mostra dimensioni e conteggi di memoria per classi del motore che i tuoi script utilizzano e memorizzano le loro istanze, come EnumItem, Animation, CFrame. Criticamente, questa vista non mostra l'utilizzo della memoria all'interno del motore stesso, solo il Luau VM.
  • Riferimenti Unici e Istanze Non Genitoriali — Mostra conteggi e numeri totali di istanze per riferimenti unici o tutti i riferimenti rimanenti che non hanno un genitore nel modello dati e sono raggiungibili solo da script. Mostra anche tutti i percorsi che bloccano l'oggetto di istanza.

Grafico

La vista Grafico è la vista più dettagliata e complessa tra tutte le viste del heap di Luau. Mostra un albero aggregato dell'utilizzo della memoria con ciascun nodo che rappresenta un oggetto con memoria allocata. L'albero mostra come gli oggetti si collegano tra loro e deriva il percorso più breve tra i riferimenti agli oggetti. Ha le seguenti colonne di dimensione della memoria:

  • Dimensione — L'utilizzo della memoria per se stesso più l'utilizzo della memoria da parte dei contenuti all'interno della struttura dati.
  • Se stesso — La memoria direttamente allocata per la struttura dati stessa, escludendo l'utilizzo della memoria da parte di qualsiasi contenuto che contiene.
Un esempio di vista Grafico

La radice dell'albero del grafico è registry, che memorizza tutti i riferimenti al motore e a Luau, come funzioni collegate ai segnali o alla libreria delle attività, tabelle restituite da script di modulo e funzioni globali, tabelle e classi. Di solito genitore le seguenti voci comuni:

  • Module @Path.To.Module è la tabella restituita da uno script di modulo.
  • name:123 =Path.To.Module è una funzione all'interno di uno script specificato. Le funzioni anonime non hanno nomi. Il nodo di livello superiore di solito fa riferimento alla funzione script globale. Esempio: :1= Workspace.[Username].Animate.
  • upvalue è un riferimento per le funzioni catturate. Consulta Catturare l'ambito locale per ulteriori informazioni.
  • env si riferisce all'ambiente di una funzione. Nella maggior parte dei casi, è una tabella che rappresenta l'ambito globale di uno script.
  • globals si riferisce all'ambiente di un thread.
  • [key] rappresenta oggetti che servono come chiavi di tabella.
  • array rappresenta un array.
  • stack si riferisce all'array che memorizza tutte le variabili locali della funzione.
  • constants rappresenta tutti i valori costanti utilizzati dalle funzioni.

Categorie di memoria

La vista Categorie di Memoria mostra dimensioni e conteggi di memoria per le categorie di memoria, che il motore assegna agli oggetti al momento dell'allocazione. Per impostazione predefinita, la categoria di memoria ha lo stesso nome dello script, oppure puoi assegnare nomi di categorie di memoria personalizzati utilizzando la funzione debug.setmemorycategory.

Riferimenti unici e istanze non genitoriali

Le viste Riferimenti Unici e Istanze Non Genitoriali sono correlate. Entrambi mostrano l'utilizzo della memoria delle istanze che non hanno un genitore nel modello dati e sono raggiungibili solo da script, insieme a tutti i percorsi che bloccano l'oggetto di istanza. Se un'istanza è referenziata solo all'interno di script Luau, appare sotto Riferimenti Unici. In caso contrario, è utilizzata anche dai sistemi di Roblox e appare sotto Istanze Non Genitoriali. Entrambe le viste mostrano due metriche:

  • Conteggio — Il numero di istanze con lo stesso nome che sono raggiungibili dallo stesso percorso, come più istanze chiamate Dragon nella stessa tabella.
  • Istanze Totali — Il numero totale di oggetti all'interno di quelle radici, come tutte le parti, script e oggetti sonori che costruiscono un'istanza Dragon.
Un esempio di vista Riferimento Unico

Queste viste sono utili per identificare istanze collegate non necessarie, che è necessario disconnettere quando non ne hai più bisogno. Se vedi molte istanze inaspettate in questa vista, controlla i percorsi che le bloccano e valuta se sono necessarie.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.