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 al tuo gioco consuma memoria. Quando l'utilizzo della memoria raggiunge i limiti del motore, il dispositivo o il server dell'utente potrebbero bloccarsi, quindi è necessario monitorare attivamente l'utilizzo.


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

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

  • Heap Luau — Crea istantanee della memoria heap, che si riferisce all'allocazione di memoria dei tuoi script. Questo strumento fornisce diverse visualizzazioni per aiutarti a identificare l'attuale allocazione di memoria e i problemi da diverse prospettive, come tipi di oggetti e classi del motore. Ti consente anche di creare più istantanee 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 categorizza e visualizza l'utilizzo della memoria in tempo reale. Mostra l'utilizzo della memoria in MB di ciascuna categoria e genera un grafico sul cambiamento dell'utilizzo nel tempo.

Per visualizzare l'allocazione della memoria:

  1. Apri la Console Sviluppatore.

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

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

  4. Esplora 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 core del motore, inclusi networking, avatar e elementi GUI su cui non hai controllo diretto.

    • PlaceMemory — Utilizzo della memoria basato su come costruisci il tuo gioco, inclusi modelli, terreno, parti, script e tutti gli altri elementi personalizzati che aggiungi al tuo gioco.

      CategoriaDescrizione
      HttpCacheAsset (immagini, mesh, ecc.) caricati dai server 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 che vengono forniti con il client Roblox) e script personalizzati.
      ScriptScript Luau.
      PhysicsCollisionDati di collisione per simulazioni fisiche.
      PhysicsPartsGeometria e cinetica fisica.
      GraphicsSolidModelsDati grafici per il rendering di 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 da elementi GUI comuni.
      AnimationMemoria utilizzata per i dati di animazione, come pose e dati memorizzati di KeyframeSequence per le animazioni degli avatar.
      NavigationMemoria utilizzata da 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 approfondimenti su come singoli script 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 le più importanti per l'ottimizzazione delle prestazioni, poiché ti aiutano a capire come le tue scelte di costruzione e scripting influenzano il consumo di memoria e le potenziali aree di ottimizzazione. Per ulteriori approfondimenti su PlaceScriptMemory, utilizza lo strumento Heap Luau per creare istantanee e analizzare l'allocazione della memoria in base a diverse metriche.

Heap Luau

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

Crea istantanee

Per creare un'istantanea della tua allocazione di memoria:

  1. Apri la Console Sviluppatore.

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

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

  4. Fai clic sul pulsante Crea Istantanea.

Analizza l'utilizzo della memoria

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

  • Grafico — Mostra un albero di utilizzo della memoria aggregato, con ogni nodo che rappresenta un oggetto con memoria allocata.
  • Tag degli oggetti — Mostra dimensioni e conteggi della memoria per tipi di runtime, come function, table e thread.
  • Categorie di memoria — Mostra dimensioni e conteggi della 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 della memoria per classi del motore che i tuoi script utilizzano e memorizzano le loro istanze, come EnumItem, Animation, CFrame. Criticamente, questa visualizzazione non mostra l'utilizzo della memoria all'interno del motore stesso, solo la VM Luau.
  • Riferimenti unici e Istanze non parentate — 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 tramite script. Mostra anche tutti i percorsi che bloccano l'oggetto istanza.

Grafico

La visualizzazione Grafico è la più dettagliata e complessa tra tutte le visualizzazioni dell'heap Luau. Mostra un albero di utilizzo della memoria aggregato con ogni 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 self più l'utilizzo della memoria dai contenuti all'interno della struttura dati.
  • Self — La memoria direttamente allocata per la struttura dati stessa, escludendo l'utilizzo della memoria da qualsiasi contenuto che contiene.
Un esempio di visualizzazione Grafico

La radice dell'albero grafico è registry, che memorizza tutti i riferimenti del motore e di Luau, come funzioni collegate a segnali o alla libreria dei task, tabelle restituite da script di modulo e funzioni globali, tabelle e classi. Di solito, è genitore delle 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 si riferisce spesso alla funzione script globale. Esempio: :1= Workspace.[Username].Animate.
  • upvalue è un riferimento per funzioni catturate. Vedi Cattura 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 fungono da chiavi di tabella.
  • array rappresenta un array.
  • stack si riferisce all'array che memorizza tutte le variabili locali delle funzioni.
  • constants rappresenta tutti i valori costanti utilizzati dalle funzioni.

Categorie di memoria

La visualizzazione Categorie di Memoria mostra dimensioni e conteggi della memoria per 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 parentate

Le visualizzazioni Riferimenti Unici e Istanze Non Parentate sono correlate. Entrambe mostrano l'utilizzo della memoria delle istanze che non hanno un genitore nel modello dati e sono raggiungibili solo tramite script, insieme a tutti i percorsi che bloccano l'oggetto istanza. Se un'istanza è referenziata solo all'interno degli script Luau, appare sotto Riferimenti Unici. Altrimenti, è anche utilizzata dai sistemi Roblox e appare sotto Istanze Non Parentate. Entrambe le visualizzazioni 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 visualizzazione Riferimento Unico

Queste visualizzazioni sono utili per identificare istanze collegate non necessarie, che devi disconnettere quando non ne hai più bisogno. Se vedi molte istanze inaspettate in questa visualizzazione, controlla i percorsi che le contengono 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.