Como limpar atributos státicos da mémoria?

Visto que, um atributo não estático o atributo viverá na memória até que o objeto exista (o coletor de lixo se encarrega disso).
Um atributos estático, é criado na memória a partir do momento em que a classe.atributo é chamado o atributo fica na memória.

Como esses atributos são destruídos ?
Por exemplo: Eu tenho uma classe chamada constantes no meu sistema, ela está cheeeias de atributos static, será que isso irá implicar no espaço da memória ? ou o java se encarrega de gerenciar esse tipo de atributo ?

[quote=felipevs]Visto que, um atributo não estático o atributo viverá na memória até que o objeto exista (o coletor de lixo se encarrega disso).
Um atributos estático, é criado na memória a partir do momento em que a classe.atributo é chamado o atributo fica na memória.[/quote]

Errado. Qualquer uso da classe gera o carregamento do atributo, mesmo que você não acesso ele.

[quote=felipevs]Como esses atributos são destruídos ?
Por exemplo: Eu tenho uma classe chamada constantes no meu sistema, ela está cheeeias de atributos static, será que isso irá implicar no espaço da memória ? ou o java se encarrega de gerenciar esse tipo de atributo ? [/quote]

Esses atributos nunca serão removidos da memória. Uma vez carregada, a classe inteira vai ficar lá, incluindo atributos estáticos. Na verdade, talvez até seja possível fazer essa limpeza usando mágicas com ClassLoaders, mas provavelmente não vale o trabalho.

Se você precisa disso, talvez esses atributos não devessem ser estáticos. Talvez seja uma boa re-pensar o design da aplicação.

Acho que você não entendeu na parte onde citei “Um atributos estático, é criado na memória a partir do momento em que a CLASSE.ATRIBUTO é chamado o atributo fica na memória.”
eu não quis dizer que eu iria chamar um atributo e carregaria só ele, eu apenas dei um exemplo da chamada, sendo que estou ciente que uma vez a classe executada, todos os atributos estáticos irão para memória. Mas… eu entendi sim o que você quis passar.

Mas por exemplo: Se 100 pessoas estiverem acessando essa aplicação, serão criado todos os atributos para cada usuário, ou os 100 usuários usarão as mesmas variáveis ?

Por ser estático, é a mesma variável. Pode ser que exista mais do que uma, mas em casos mais complexos, novamente envolvendo ClassLoaders.

Importante: só tome cuidado para não usar esse fato como forma de otimização. Pense conceitualmente se faz sentido tais variáveis serem estáticas e, portanto, compartilhadas entre todos os objetos do sistema.

Tio - não fique usando variáveis estáticas sem necessidade.

Se você está usando uma variável estática sem saber direito, provavelmente está fazendo alguma coisa errada.

Se 100 pessoas estiverem acessando essa aplicação, e se as variáveis contiverem dados que podem ser modificados, você precisa pelo menos sincronizar o acesso a elas, o que normalmente implica em deixar o sistema mais lento porque apenas uma thread de cada vez pode acessar essas variáveis, o que pode ser muito ruim.