Uso de memória

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Cada componente de construção e script que você adiciona ao seu jogo consome memória. Quando o uso de memória atinge os limites do mecanismo, o dispositivo ou servidor do usuário pode travar, portanto, você precisa monitorar ativamente o uso.


O Console do Desenvolvedor fornece duas ferramentas para monitorar o uso de memória:

  • Memória — Veja o consumo de memória em tempo real por categorias de uso, incluindo seus componentes personalizados e os processos internos do mecanismo.

  • Heap Luau — Crie instantâneas da memória heap, que se refere à alocação de memória dos seus scripts. Esta ferramenta fornece várias visualizações para ajudá-lo a identificar a alocação de memória atual e problemas de diferentes perspectivas, como tipos de objetos e classes do mecanismo. Ela também permite que você crie várias instantâneas para comparar as diferenças no uso de memória ao longo do tempo.

Você pode abrir o console durante uma sessão de jogo de teste ou ao vivo usando qualquer uma das seguintes formas:

  • Pressione F9.
  • Digite /console no chat.
  • Use o menu do jogo:
    1. Abra o Menu Roblox no jogo.

    2. Selecione a aba Configurações.

    3. Role para baixo até Console do Desenvolvedor e clique em Abrir.

Memória

A ferramenta Memória categoriza e exibe o uso de memória em tempo real. Ela exibe o uso de memória em MB de cada categoria e gera um gráfico sobre a mudança de uso ao longo do tempo.

Para visualizar a alocação de memória:

  1. Abra o Console do Desenvolvedor.

  2. Expanda o menu suspenso de ferramentas para selecionar Memória.

    Menu suspenso de todas as ferramentas do Console do Desenvolvedor com a opção Memória destacada para seleção.
  3. Expanda o menu suspenso cliente-servidor para selecionar Cliente ou Servidor.

  4. Navegue pelas categorias e itens de uso de memória. Se você quiser ver o uso ao longo do tempo, expanda a categoria para exibir um gráfico.

    • CoreMemory — Uso de memória pelos processos de construção principais do mecanismo, incluindo rede, avatares e elementos de GUI que você não controla diretamente.

    • PlaceMemory — Uso de memória com base em como você constrói seu jogo, incluindo modelos, terreno, partes, scripts e todos os outros elementos personalizados que você adiciona ao seu jogo.

      CategoriaDescrição
      HttpCacheAtivos (imagens, malhas, etc.) carregados dos servidores Roblox e agora mantidos em um cache na memória.
      InstancesInstances no local.
      SignalsSinais que disparam entre instâncias (um evento disparando em uma instância para acionar um evento em outra instância).
      LuaHeapMemória heap para scripts principais (scripts que acompanham o cliente Roblox) e scripts personalizados.
      ScriptScripts Luau.
      PhysicsCollisionDados de colisão para simulações físicas.
      PhysicsPartsGeometria e cinética físicas.
      GraphicsSolidModelsDados gráficos para renderizar modelos sólidos.
      GraphicsMeshPartsGráficos para objetos MeshPart.
      GraphicsParticlesGráficos para sistemas de partículas.
      GraphicsPartsGráficos para partes.
      GraphicsSpatialHashRenderização geral.
      GraphicsTerrainGráficos para terreno.
      GraphicsTextureMemória de textura.
      GraphicsTextureCharacterMemória de textura para personagens.
      SoundsSonhos em memória.
      StreamingSoundsSonhos em streaming.
      TerrainVoxelsVoxels de terreno.
      TerrainPhysicsFísica de terreno.
      GuiMemória usada por elementos comuns de GUI.
      AnimationMemória usada para dados de animação, como poses e dados em cache de KeyframeSequence para animações de avatar.
      NavigationMemória usada por estruturas de suporte para PathfindingService.
    • UntrackedMemory — Alocações de memória que o sistema não consegue facilmente atribuir a uma fonte específica.

    • PlaceScriptMemory — Uso de memória dos seus scripts com insights sobre como scripts individuais e tags de memória personalizadas contribuem para o uso geral de memória.

    • CoreScriptMemory — Uso de memória por scripts internos do mecanismo que você não controla diretamente.

    Entre essas categorias, PlaceMemory e PlaceScriptMemory são as mais importantes para otimização de desempenho, pois ajudam você a entender como suas escolhas de construção e script afetam o consumo de memória e potenciais áreas para otimização. Para mais insights sobre PlaceScriptMemory, use a ferramenta Heap Luau para criar instantâneas e analisar a alocação de memória por diferentes métricas.

Heap Luau

A ferramenta Heap Luau permite que você crie instantâneas da alocação atual de memória heap, que se refere à memória que os scripts Luau usam para armazenar variáveis, tabelas, funções e outras estruturas de dados em tempo de execução. Esta ferramenta fornece várias visualizações para ajudá-lo a identificar problemas de diferentes perspectivas, como tipos de objetos e classes do mecanismo. Ela também permite que você crie várias instantâneas para comparar as diferenças no uso de memória ao longo do tempo.

Criar instantâneas

Para criar uma instantânea da sua alocação de memória:

  1. Abra o Console do Desenvolvedor.

  2. Expanda o menu suspenso de ferramentas para selecionar LuauHeap.

    Menu suspenso de todas as ferramentas do Console do Desenvolvedor com a opção LuauHeap destacada para seleção.
  3. Expanda o menu suspenso cliente-servidor para selecionar Cliente ou Servidor.

  4. Clique no botão Criar Instantânea.

Analisar uso de memória

A ferramenta fornece muitas visualizações sobre o uso de memória Luau:

  • Gráfico — Mostra uma árvore de uso de memória agregada, com cada nó representando um objeto com memória alocada.
  • Tags de Objetos — Mostra tamanhos de memória e contagens por tipos de tempo de execução, como function, table e thread.
  • Categorias de Memória — Mostra tamanhos de memória e contagens por categorias de memória atribuídas pelo mecanismo. O mecanismo atribui uma categoria de memória a um objeto no momento da alocação.
  • Classes de Objetos — Mostra tamanhos de memória e contagens por classes do mecanismo que seus scripts usam e armazenam suas instâncias, como EnumItem, Animation, CFrame. Criticamente, esta visualização não mostra o uso de memória dentro do mecanismo em si, apenas a VM Luau.
  • Referências Únicas e Instâncias Sem Pai — Mostra contagens e números totais de instâncias para referências únicas ou todas as referências restantes que não têm um pai no modelo de dados e são acessíveis apenas por scripts. Também mostra todos os caminhos que fixam o objeto de instância.

Gráfico

A visualização Gráfico é a mais detalhada e complexa entre todas as visualizações do heap Luau. Ela mostra uma árvore de uso de memória agregada com cada nó representando um objeto com memória alocada. A árvore mostra como os objetos se conectam entre si e deriva o caminho mais curto entre referências de objetos. Ela possui as seguintes colunas de tamanho de memória:

  • Tamanho — O uso de memória próprio mais o uso de memória pelos conteúdos dentro da estrutura de dados.
  • Próprio — A memória diretamente alocada para a estrutura de dados em si, excluindo o uso de memória por qualquer conteúdo que ela contenha.
Um exemplo de visualização de Gráfico

A raiz da árvore do gráfico é registry, que armazena todas as referências do mecanismo e Luau, como funções conectadas a sinais ou à biblioteca de tarefas, tabelas retornadas por scripts de módulo e funções globais, tabelas e classes. Normalmente, ela contém as seguintes entradas comuns:

  • Module @Path.To.Module é a tabela retornada por um script de módulo.
  • name:123 =Path.To.Module é uma função dentro de um script especificado. Funções anônimas não têm nomes. O nó de nível superior geralmente se refere à função de script global. Exemplo: :1= Workspace.[Username].Animate.
  • upvalue é uma referência para funções capturadas. Veja Capturar escopo local para mais informações.
  • env refere-se ao ambiente de uma função. Na maioria dos casos, é uma tabela representando o escopo global de um script.
  • globals refere-se ao ambiente de uma thread.
  • [key] representa objetos que servem como chaves de tabela.
  • array representa um array.
  • stack refere-se ao array que armazena todas as variáveis locais da função.
  • constants representa todos os valores constantes que as funções usam.

Categorias de memória

A visualização Categorias de Memória mostra tamanhos de memória e contagens por categorias de memória, que o mecanismo atribui a objetos no momento da alocação. Por padrão, a categoria de memória tem o mesmo nome que o script, ou você pode atribuir nomes de categorias de memória personalizados usando a função debug.setmemorycategory.

Referências únicas e instâncias sem pai

As visualizações Referências Únicas e Instâncias Sem Pai estão relacionadas. Ambas mostram o uso de memória de instâncias que não têm um pai no modelo de dados e são acessíveis apenas por scripts, juntamente com todos os caminhos que fixam o objeto de instância. Se uma instância for referenciada apenas dentro de scripts Luau, ela aparece sob Referências Únicas. Caso contrário, ela também está em uso pelos sistemas Roblox e aparece sob Instâncias Sem Pai. Ambas as visualizações mostram duas métricas:

  • Contagem — O número de instâncias com o mesmo nome que são acessíveis a partir do mesmo caminho, como várias instâncias chamadas Dragon na mesma tabela.
  • Total de Instâncias — O número total de objetos dentro dessas raízes, como todas as partes, scripts e objetos de som que constroem uma instância Dragon.
Um exemplo de visualização de Referência Única

Essas visualizações são úteis para identificar instâncias conectadas desnecessárias, que você precisa desconectar quando não precisar mais delas. Se você ver muitas instâncias inesperadas nesta visualização, verifique os caminhos que as mantêm e avalie se são necessárias.

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.