O garbage collector (coletor de lixo) gerencia automaticamen...
O coletor descrito é o
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - ZGC
O tema da questão aborda o sistema de gerenciamento automático de memória presente em várias linguagens de programação, conhecido como garbage collector ou coletor de lixo. O Java é uma dessas linguagens que possui um sistema sofisticado de coleta de lixo, com vários coletores de lixo especializados para diferentes tipos de aplicações e requisitos de desempenho. A questão descreve um coletor de lixo desenhado para gerenciar grandes heaps (áreas de memória), que foca em minimizar as pausas causadas pela coleta de lixo, sendo adequado para aplicações que exigem tempos de resposta consistentes e têm requisitos rigorosos de latência.
Para resolver essa questão, o candidato precisa ter conhecimento sobre os diferentes tipos de coletores de lixo disponíveis na Java Virtual Machine (JVM) e suas características. O Z Garbage Collector (ZGC) é um coletor de lixo com baixa pausa, que foi introduzido para atender exatamente o tipo de cenário descrito na questão: gerenciar memória de aplicações grandes com a necessidade de tempos de resposta rápidos e consistentes.
A justificativa para a alternativa E ser a correta é que o ZGC foi projetado com o objetivo de oferecer uma performance escalável e manter as pausas de coleta de lixo abaixo de 10ms, o que é crucial para aplicações sensíveis à latência. O ZGC consegue lidar com heaps que vão de alguns gigabytes a muitos terabytes, o que o torna uma boa escolha para sistemas com grandes quantidades de dados em memória.
As outras alternativas como Serial, Parallel, G1 e CMS (Concurrent Mark Sweep) representam outros coletores de lixo da JVM que têm diferentes características e são otimizados para cenários distintos, não sendo a melhor escolha quando o requisito principal é a latência extremamente baixa em heaps muito grandes.
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 coletor descrito é o G1 (Garbage-First). Ele foi projetado especificamente para grandes heaps e é conhecido por minimizar o impacto das pausas na coleta de lixo, tornando-o adequado para aplicações sensíveis à latência. O G1 é usado em cenários em que as aplicações exigem tempos de resposta consistentes e têm requisitos de latência rigorosos.
A resposta do colega está equivocada.
O coletor específico para aplicações que exigem baixa latência (aplicações que usam dados em tempo real, jogos online) é o ZGC.
O G1 tem um propósito mais geral.
Serial: O Serial GC é um coletor de lixo simples e eficiente que opera de forma serial, o que significa que a coleta de lixo é realizada em uma única thread. Ele é adequado para aplicações de baixa demanda e máquinas com recursos limitados, pois tem um baixo overhead de CPU e consumo de memória.
Parallel: O Parallel GC, também conhecido como Parallel Scavenge, é um coletor de lixo que opera de forma paralela, o que significa que ele usa várias threads para realizar a coleta de lixo. Ele é projetado para aplicações que exigem alta taxa de transferência e escalabilidade, pois pode aproveitar ao máximo os recursos do sistema para reduzir o tempo de pausa e maximizar o throughput.
G1 (Garbage-First): O G1 GC é um coletor de lixo projetado para oferecer um bom equilíbrio entre latência e throughput. Ele divide a heap em regiões e usa um algoritmo de coleta de lixo adaptativo para priorizar a coleta de regiões com mais lixo primeiro. Isso ajuda a minimizar o tempo de pausa e a distribuir a carga de trabalho de forma mais uniforme ao longo do tempo.
CMS (Concurrent Mark-Sweep): O CMS GC é um coletor de lixo que opera de forma concorrente, o que significa que ele realiza a maior parte da coleta de lixo enquanto a aplicação continua em execução. Isso ajuda a reduzir o tempo de pausa e torná-lo adequado para aplicações sensíveis à latência. No entanto, o CMS GC pode sofrer de fragmentação de heap e pode não ser tão eficiente quanto outros coletores de lixo em termos de uso de CPU.
ZGC: O ZGC é um coletor de lixo de baixa latência projetado para aplicações que exigem tempos de pausa muito curtos e previsíveis, mesmo em grandes heaps de memória. Ele usa técnicas de compactação parcial e concorrente para minimizar o tempo de pausa e é adequado para cargas de trabalho sensíveis à latência, como aplicações de jogos, financeiras e de telecomunicações.
O coletor de lixo descrito é o **Z Garbage Collector (ZGC)**.
O ZGC é projetado para lidar com grandes heaps, que podem variar de alguns gigabytes a vários terabytes, e se concentra em minimizar o impacto das pausas de coleta de lixo. Isso o torna adequado para aplicações que exigem tempos de resposta consistentes e têm requisitos de latência rigorosos. O ZGC é ideal para cenários em que a latência é crítica e onde grandes heaps são comuns.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo