Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Utilizzare il profiler di ObjectDB
A partire da Godot 4.6, è disponibile una nuova scheda ObjectDB Profiler nel pannello inferiore Debugger. Questo profiler consente di catturare snapshot dello stato attuale dell'ObjectDB, ovvero il database che contiene tutte le classi derivate da Object attualmente allocate in memoria. Ciò è utile per identificare perdite di memoria e comprendere l'utilizzo della memoria del progetto.
Inoltre, questo strumento è in grado di visualizzare le differenze tra due snapshot. Ciò può essere utile per identificare miglioramenti o peggioramenti nell'utilizzo della memoria dopo aver apportato modifiche al progetto. Ridurre l'utilizzo della memoria può portare a prestazioni migliori, anche nei casi in cui la memoria non rappresenta un collo di bottiglia. Riducendo l'utilizzo della memoria, è possibile effettuare meno allocazioni, che possono essere un'operazione costosa, soprattutto se effettuate in grandi quantità durante il gioco.
Vedi anche
Consulta Quando e come evitare di utilizzare i nodi per tutto per informazioni sull'utilizzo di alternative più leggere ai nodi, che possono aiutare a ridurre il consumo di memoria nel tuo progetto.
Avvertimento
Il profiler di ObjectDB non tiene traccia di ogni singolo bit di memoria utilizzato dal motore o dalle librerie esterne. Le classi native del motore che non sono esposte all'API di scripting non appariranno negli snapshot.
Considera usare strumenti esterni di profilazione della memoria se hai bisogno di accedere a queste informazioni.
Utilizzo
Apri la scheda Profiler di ObjectDB nel pannello inferiore . Ti troverai nella pagina di riepilogo, senza snapshot catturati ancora.
Riepilogo del profiler di ObjectDB senza snapshot catturati
Avvia il progetto, poi raggiungi il punto in cui desideri creare uno snapshot (ad esempio, dopo aver caricato un livello). Clicca su per creare uno snapshot al momento attuale. Se il pulsante appare disattivato, assicurati prima che il progetto sia in esecuzione.
Riepilogo del profiler di ObjectDB con uno snapshot catturato
È possibile catturare più snapshot durante una singola esecuzione del progetto. Inoltre, facendo clic destro su uno snapshot nell'elenco degli snapshot, è possibile rinominarlo, mostrarlo nel gestore dei file o eliminarlo.
Suggerimento
È buona norma rinominare gli snapshot dopo averli catturati, assegnando loro nomi descrittivi (ad esempio, before_optimization, after_optimization). A prescindere dal nome, la data in cui è stato catturato lo snapshot rimane memorizzata nel file dello snapshot stesso.
I file snapshot hanno l'estensione .odb_snapshot e si trovano in user://objectdb_snapshots/ (consultare i dettagli sui percorsi dei dati). Questi file si possono copiare tranquillamente tra diversi dispositivi, poiché sono indipendenti dalla piattaforma.
Visualizzare le differenze tra gli snapshot
Dopo aver catturato almeno due snapshot, il menu a tendina diventa disponibile. Qui è possibile selezionare un altro snapshot da confrontare con quello attualmente selezionato.
Menu a tendina "Diff Against" nell'angolo in basso a sinistra del profiler di ObjectDB
La pagina di riepilogo mostrerà poi le differenze tra i due snapshot:
Due snapshot confrontate nella scheda Riepilogo
Questo vale anche per tutte le altre schede del profiler di ObjectDB, che mostreranno le differenze tra i due snapshot in colonne aggiuntive.
Classi
Nella scheda Classi, è possibile visualizzare quante istanze di ciascuna classe sono state create al momento della cattura dello snapshot:
Uno snapshot visualizzato nella scheda Classi
In modalità di confronto, sarà mostrato il numero di istanze della classe per lo snapshot attualmente selezionato (colonna A) e per lo snapshot con cui viene effettuato il confronto (colonna B). Sarà inoltre mostrata la differenza nel numero di istanze nella colonna Delta.
Due snapshot confrontati nella scheda Classi. Qui, la colonna A rappresenta second_session, la colonna B rappresenta first_session
Puoi cliccare su una classe nell'elenco a destra per visualizzarla nell'ispettore.
Un'istanza di classe selezionata visualizzata nell'ispettore
Suggerimento
L'anteprima delle istanze nell'ispettore è disponibile anche in altre schede (Nodi, Oggetti e RefCounted).
Oggetti
La scheda Oggetti è simile, ma si differenzia per il modo in cui presenta i dati. Qui, ogni istanza è elencata in modo lineare, anziché essere raggruppata per classe. Quando si seleziona un oggetto, sulla destra apparirà un elenco degli altri oggetti a cui fa riferimento (), nonché un elenco degli oggetti da cui è referenziato ().
This allows you to view objects either in a "top-down" manner (viewing what objects a given object references) or in a "bottom-up" manner (viewing what objects reference a given object).
La scheda Oggetti in uso per visualizzare gli oggetti in modo "dall'alto verso il basso"
In the above image, clicking the default_font object in the list will
switch the view to the perspective of that object. This object is being
referenced by a lot of other objects as well, which effectively switches
to a "bottom-up" perspective.
La scheda Oggetti in uso per visualizzare gli oggetti in modo "dal basso verso l'alto"
Nodi
Successivamente, la scheda Nodi mostra l'albero di scene al momento della cattura dello snapshot.
La scheda Nodi usata per visualizzare l'albero di scene
This tab is particularly interesting in diff view, since it supports showing the difference between the two snapshots in a more visual manner. When is unchecked, you can see the differences side by side.
Separate diff view in the Nodes tab
Quando è spuntato, è possibile vedere le differenze unite in un unico albero, con i nodi aggiunti evidenziati in verde e i nodi rimossi evidenziati in rosso.
Combined diff view in the Nodes tab
Additionally, you can view a list of orphan nodes (nodes that are not attached to the scene tree root) at the end of the tree view. You can view it more easily by collapsing the root node, since these are listed outside the main scene tree.
Nodi orfani alla fine dell'albero dei nodi nel profiler di ObjectDB
RefCounted
L'ultima scheda è la scheda RefCounted. Questa scheda è simile alla scheda Oggetti, ma mostra direttamente nella tabella il conteggio dei riferimenti delle classi derivate da RefCounted. La tabella ha quattro colonne:
Rif. nativi: il numero di riferimenti nativi del motore all'oggetto.
Rif. ObjectDB: il numero di riferimenti di ObjectDB all'oggetto.
Rif. totali: la somma dei riferimenti nativi e dei riferimenti di ObjectDB.
Cicli ObjectDB: il numero di riferimenti circolari rilevati.
When in diff view, snapshot B is always listed above snapshot A if a RefCounted instance exists in both snapshots.
L'elenco a destra mostra i dettagli relativi all'istanza selezionata, tra cui un elenco di riferimenti e se questi sono duplicati.
La scheda RefCounted usata per visualizzare le istanze RefCounted
Nota
La scheda RefCounted non elenca gli oggetti che derivano direttamente da Object, poiché questi non conteggiano i riferimenti.