Questão de Programação — PHP — Quadrix 2025
- Código
- qg595098
- Banca
- Quadrix
- Órgão
- CFO
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico em Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: letra E (ERRADO). A afirmação está incorreta porque, embora o PHP gerencie memória automaticamente por meio do coletor de lixo (garbage collector), o programador pode otimizar o uso de memória manualmente, utilizando funções como unset(), memory_get_usage() e gc_collect_cycles(), além de técnicas como liberar referências e evitar variáveis desnecessárias. O erro está na segunda parte da frase, que nega essa possibilidade.
O gerenciamento de memória em linguagens de programação pode ser feito de duas formas principais: manual, como em C, onde o programador aloca e libera memória explicitamente com funções como malloc() e free(); e automático, como em PHP, Java e Python, onde o ambiente de execução cuida da alocação e liberação de memória. No PHP, o mecanismo responsável por isso é o coletor de lixo (garbage collector), que identifica e libera memória que não está mais em uso, evitando vazamentos de memória.
No entanto, dizer que o programador "não tem como otimizar o uso de memória de forma manual" é falso. O PHP oferece diversas ferramentas para que o desenvolvedor gerencie a memória de forma mais eficiente. Por exemplo, a função unset() permite liberar uma variável específica da memória, enquanto memory_get_usage() permite monitorar o consumo de memória em tempo real. Além disso, o PHP possui funções como gc_collect_cycles() que forçam a coleta de ciclos de referência, e memory_limit que define o limite máximo de memória que um script pode utilizar.
Na prática, um programador pode otimizar a memória em PHP de várias maneiras: liberando variáveis grandes após o uso, evitando criar cópias desnecessárias de arrays, usando referências quando apropriado, e processando dados em lotes em vez de carregar tudo de uma vez. Essas técnicas são amplamente utilizadas em aplicações web de grande porte para melhorar o desempenho e evitar estouros de memória.
A pegadinha desta questão está na palavra "não tem como". A banca tenta fazer o candidato acreditar que, por ser uma linguagem com gerenciamento automático, o programador não tem controle algum sobre a memória. Isso é um equívoco comum, mas a verdade é que o gerenciamento automático não exclui a possibilidade de otimização manual. O programador pode e deve otimizar o uso de memória, especialmente em aplicações que lidam com grandes volumes de dados.
A banca explora a confusão entre "gerenciamento automático" e "impossibilidade de otimização manual". O PHP gerencia memória automaticamente, mas isso não impede o programador de usar técnicas como unset(), memory_get_usage() e gc_collect_cycles() para otimizar o consumo. Lembre-se: gerenciamento automático ≠ sem controle manual.
A alternativa C afirma que o item está Certo, ou seja, que o programador não tem como otimizar o uso de memória manualmente. Isso é falso. O PHP oferece funções como unset(), memory_get_usage(), memory_get_peak_usage() e gc_collect_cycles() que permitem ao programador gerenciar e otimizar a memória. Além disso, técnicas como liberar variáveis grandes, usar referências e processar dados em lotes são formas de otimização manual. Portanto, a alternativa C está incorreta.
A alternativa E afirma que o item está Errado, o que é correto. A afirmação do enunciado é falsa porque, embora o PHP tenha gerenciamento automático de memória, o programador pode otimizar o uso de memória manualmente. As funções unset(), memory_get_usage() e gc_collect_cycles() são exemplos de ferramentas que permitem esse controle. Portanto, a alternativa E é a correta.
Gabarito: letra E
Link permanente: /questoes/qg595098