Em vinculação de armazenamento, a garbage collection do Ja...

Próximas questões
Com base no mesmo assunto
Q314390 Programação
Acerca de programação estruturada, julgue os itens seguintes.

Em vinculação de armazenamento, a garbage collection do Java enquadra-se na categoria de armazenamento de variáveis escalares do tipo heap-dinâmica explícita.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - errado

Ao analisarmos a questão, precisamos entender o conceito de garbage collection (coleta de lixo) e como ele se aplica dentro do contexto da linguagem de programação Java. A garbage collection é um mecanismo automático de gerenciamento de memória que tem a função de recuperar a memória alocada por objetos que não são mais acessíveis ou úteis para o programa, ou seja, que se tornaram "lixo".

A afirmação da questão sugere que a garbage collection do Java se classifica como "armazenamento de variáveis escalares do tipo heap-dinâmica explícita". Essa afirmação é incorreta por algumas razões:

Em primeiro lugar, o termo "heap-dinâmica explícita" geralmente é usado para descrever situações em que o programador deve alocar e desalocar memória manualmente (como em linguagens como C e C++ usando malloc e free, ou new e delete).

Em contraste, Java possui um sistema de gerenciamento de memória automático onde o programador não precisa desalocar memória explicitamente. Nesse caso, a linguagem de programação fornece o garbage collector, que opera de forma implícita, sem a necessidade de intervenção direta do desenvolvedor.

Além disso, o termo "variáveis escalares" geralmente se refere a variáveis que armazenam um único valor, como um número inteiro ou um caractere. No entanto, a garbage collection no Java é responsável por objetos, que podem conter múltiplos valores e representar estruturas de dados complexas.

Portanto, a garbage collection em Java pode ser mais adequadamente descrita como um mecanismo automático que opera na heap, onde objetos são alocados e gerenciados, mas sem a necessidade de desalocação explícita por parte do programador.

Com base nesses pontos, a alternativa correta é "E - errado", pois a afirmação não representa corretamente como a garbage collection funciona em 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

O gabarito dessa questão foi inicialmente dada como Correta e foi alterada para Errada depois dos recursos.
Existiu uma discussão sobre essa questão aqui: Timasters
Vou copiar as melhores respostas de lá: 

As vinculações de memória a variáveis, podem ser divididas em quatro categorias de acordo com o seu tempo de vida:
(1) Variáveis Estáticas : são vinculadas a células de memória antes do início de execução do programa, e permanecem associadas às mesmas células até o programa terminar. (ex: variáveis static do Java).
(2) Variáveis Pilhas-Dinâmicas : a associação é efectuada em tempo de execução, na instrução de declaração, e permanece inalterável até o fim do programa.
(3) Variáveis Heap-Dinâmicas Explícitas : as variáveis são reservadas e libertadas de memória em tempo de execução por declarações explícitas do programador. (Em JAVA todos os objectos são variáveis heap-dinâmicas explicitas)
(4) Variáveis Heap-Dinâmicas Implícitas : são reservadas no momento em que lhe são atribuídas valores e libertadas por meio de instruções explícitas. Por vezes são nomes que se adaptam a diferentes tipos de variáveis.
(Fonte: Conceitos de Linguagens de Programação, Aula baseada no Livro do Sebesta

Porém, a questão perguntou em relação ao garbage collection (e não aos objetos criados em Java) e por isso ele não pode ser considerado explícito. Visto que o programador não tem real controle sobre o garbage collector. Segue:

"Em Java, todos os dados, exceto os escalares primitivos, são objetos. Os objetos Java são dinâmicos na pilha explícitos e acessados por meio de variáveis de referência. O Java não tem nenhuma maneira de destruir explicitamente uma variável dinâmica na pilha; em vez disso, é usada a coleta de lixo implícita."
(FonteConceitos de Linguagens de Programação, 5ª Edição, Robert W. Sebesta, pag 188)

Gabarito "E"
Nossa nunca ouvi falar disso  armazenamento de variáveis escalares do tipoheap-dinâmica explícita. Só sei que o GC é chamado pela JVM para limpeza de memória dos objetos que não possuem referência ou não são alcançados por nenhuma thread ativa. 
Justificativa CESPE: 

"Em determinadas situações em vinculação de armazenamento, a garbage collection do Java não se enquadra na categoria de armazenamento de variáveis escalares do tipo heap-dinâmica explícita. Por essa razão, opta-se pela alteração do gabarito do item."

http://www.cespe.unb.br/concursos/inpi_12/arquivos/INPI_JUSTIFICATIVAS_DE_ALTERA____O_DE_GABARITO.PDF

Em Java, a alocação e desalocação de memória acontece de maneira automática.

o erro seria dizer que java trabalhar explicitamente, exemplo que linguagem que trabalhar explicito e C++

 O GC, ou Garbage Collector (Coletor de Lixo), é um recurso responsável por desalocar quantidades de memória que não se encontram mais acessíveis em um programa.

Clique para visualizar este comentário

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