Humberto, essa "limpeza" é feita pelo próprio CDI.
Os escopos dizem por quanto tempo um bean permanecerá com seus dados.
Existem mais, mas os principais escopos são:
ApplicationScoped -> Usado quando queremos que apenas uma instância do bean seja usada durante todo o tempo de vida da aplicação.
SessionScoped -> Usado quando desejamos manter o bean durante toda a sessão, ou seja, mesmo que o usuário faça vários requests, o bean continuará existindo. Muito comum esse ser o escopo utilizado para manter as informações do usuário logado.
ViewScoped -> O bean manterá seus dados enquanto o usuário não mudar a view, isto é, não mudar de tela.
RequestScoped -> Usado quando queremos que o objeto dure apenas por uma requisição. Deve-se dar preferência a esse escopo, pois ele é o menor e não fica consumindo recursos do servidor (claro que depende da sua necessidade).
Ao fim do ciclo de vida de cada um desses escopos, o bean é destruído e seus dados perdidos. Quando o usuário fizer uma nova requisição, um novo bean será criado, como se fosse dado um new() automaticamente.