Analise o seguinte trecho de código Java: StringBuilder sb ...

Próximas questões
Com base no mesmo assunto
Q2171695 Programação
Analise o seguinte trecho de código Java:
StringBuilder sb = new StringBuilder("Memória"); sb.append(" ocupada.");
Em qual local a JVM (Java Virtual Machine) armazenará a instância de sb?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - Heap

No contexto de programação Java, entender o gerenciamento de memória da JVM (Java Virtual Machine) é fundamental. Quando criamos objetos em Java, estes são armazenados na área de memória conhecida como Heap. A Heap é responsável por armazenar as instâncias dos objetos que são criados durante a execução do programa. Ela é diferente da Stack, que armazena as variáveis locais e os dados referentes à chamada dos métodos, e do PermGen (ou Metaspace a partir do Java 8), que armazena metadados das classes e outros artefatos relacionados ao carregamento de classes.

No trecho de código fornecido, StringBuilder sb = new StringBuilder("Memória"); cria uma instância de StringBuilder com o conteúdo inicial "Memória". Ao usar new, o Java aloca memória para o novo objeto StringBuilder na Heap, pois é onde os objetos são armazenados. O método append é então chamado para adicionar a string " ocupada." ao objeto StringBuilder, modificando o estado deste objeto na Heap.

As demais opções não são locais apropriados para o armazenamento de instâncias de objetos no Java:

  • Perm: Região de memória que era utilizada para armazenar metadados das classes, substituída pelo Metaspace em versões mais recentes do Java;
  • Stack: Utilizada para armazenar frames de execução de métodos, variáveis locais e referências a objetos;
  • Swap: É um espaço de armazenamento secundário usado pelo sistema operacional quando o RAM está cheio, não é um conceito diretamente gerenciado pela JVM;
  • Sweep: Não é uma área de memória, mas se refere a uma operação de coleta de lixo onde objetos não mais referenciados são removidos da memória Heap.

Portanto, a alternativa correta é a A - Heap, pois é na Heap que objetos e instâncias, como o StringBuilder sb, são armazenados na memória quando criados na linguagem Java.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A classe StringBuilder faz parte do pacote java.lang. Essa classe permite criar e manipular dados de Strings dinamicamente, ou seja, podem criar variáveis de String modificáveis.

Uma vantagem sobre a classe String é a concatenação de strings. Pois quando concatena strings com StringBuilder é invocado o método append. Esse método aloca novas strings concatenadas para o mesmo objeto, ou seja, cada vez que concatena strings não são criadas cópias dos objetos como é realizado pelo método concat da classe String, contribuindo para um melhor desempenho do sistema.

O espaço de heap é usado para a alocação dinâmica de memória de objetos Java e classes JRE no tempo de execução . Novos objetos são sempre criados no espaço heap e as referências a esses objetos são armazenadas na memória da pilha.

O heap é a área de dados de runtimea partir da qual a memória de todas as instâncias de classes e matrizes é alocada

Áreas de memórias da JVM:

Heap - armazena os objetos criados pela aplicação. Ex: objetos criados com new().

Perm - armazena interfaces, classes, métodos e atributos estáticos.

- JAVA 8 o PERM foi substituído pelo MetaSpace.

Pilha - Primitivos;

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo