Pular para o conteúdo principal

Questão de Programação — Plataforma Java — FUNDATEC 2023

ProgramaçãoPlataforma Java
Código
qq896824
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Programação de Sistemas na Tecnologia Java
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?
  1. AHeap
  2. BPerm
  3. CStack
  4. DSwap
  5. ESweep
Revelar gabarito e comentário

GabaritoA — Heap

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Armazenamento de objetos na JVM – Heap vs Stack

Gabarito: letra A (Heap). Instâncias de objetos em Java são sempre alocadas na área de heap da memória gerenciada pela JVM. A variável sb (a referência) é armazenada na stack, mas o objeto StringBuilder propriamente dito fica no heap. É o conceito fundamental de gerenciamento de memória em Java.

A banca testa o conhecimento sobre as regiões de memória da JVM: heap, stack, metaspace (antigo PermGen) e algoritmos de garbage collection. Vamos analisar cada alternativa.

NÃO CAIA NESSA!

Muitos candidatos confundem a referência (que fica na stack) com o objeto (que fica no heap). A pergunta é clara: "a instância de sb" – ou seja, o objeto. Outra armadilha: lembrar do PermGen/Metaspace (que armazena metadados de classe, não instâncias) ou inventar áreas como "Swap" (memória virtual do SO) e "Sweep" (fase do GC).

1Heap
Instâncias de objetos
Garbage Collection
2Stack
Variáveis locais
Referências a objetos
3Metaspace (antigo PermGen)
Metadados de classe
Constantes e strings internadas
Memória JVM
LEVELsoulevel.com.br
Memória JVM: Heap (Instâncias de objetos, Garbage Collection); Stack (Variáveis locais, Referências a objetos); Metaspace (antigo PermGen) (Metadados de classe, Constantes e strings internadas)

Alternativa A – ✅ Correta ⟵ GABARITO

O heap é a região da JVM onde todos os objetos Java são alocados dinamicamente. Ao executar new StringBuilder(...), a JVM aloca memória no heap para o novo objeto. A referência sb (variável local) fica na stack, mas a instância em si reside no heap. Portanto, a alternativa está correta.

Alternativa B – ❌ Incorreta

Perm (Permanent Generation) é uma área que existia até o Java 7, substituída pelo Metaspace no Java 8 em diante. Ela armazena metadados de classes, métodos, constantes e strings internadas – não armazena objetos de instância como StringBuilder. Confundir essa área com o heap é um erro clássico.

Alternativa C – ❌ Incorreta

Stack (pilha) é a região de memória que guarda variáveis locais (tipos primitivos e referências a objetos) e o estado de cada chamada de método. A referência sb está na stack, mas o objeto apontado por ela está no heap. A questão pergunta onde fica a instância de sb, não a referência – portanto, stack está errada.

Alternativa D – ❌ Incorreta

Swap não é uma área de memória da JVM. É um mecanismo do sistema operacional que utiliza o disco como extensão da memória RAM (memória virtual). A JVM não armazena objetos diretamente em swap; ela aloca no heap, e o SO pode eventualmente paginar partes da memória para swap, mas isso é transparente para a aplicação Java. Portanto, não é o local de armazenamento direto.

Alternativa E – ❌ Incorreta

Sweep é uma fase do algoritmo de Garbage Collector (coletor de lixo), conhecida como "varredura" ou "sweep phase", na qual o GC identifica e libera objetos não referenciados. Não é uma área de memória, e sim uma etapa de um processo. A instância sb é alocada no heap, e o sweep pode agir sobre ela posteriormente, mas não é o local de armazenamento.


Resumo das áreas de memória da JVM:

Área

O que armazena

Heap

Todos os objetos e arrays criados com new ou similares (instâncias).

Stack

Variáveis locais (primitivos e referências), frames de método.

Metaspace (antes PermGen)

Metadados de classe, pools de constantes, strings internadas.

Code Cache

Código compilado JIT.

Swap (SO)

Mecanismo de memória virtual, não faz parte da JVM.

PEGA ESSA DICA!

Na prova, leia com atenção o que a questão pede: "instância" = objeto = heap; "referência" = variável = stack (quando variável local). Esse é o ponto mais cobrado sobre memória Java.

Gabarito: letra A (Heap).

Link permanente: /questoes/qq896824