Duvida conceitual: criei uma aplicação com varias classes. Cada classe possui apenas métodos staticos que vão sendo chamados durante a execução por diversas threads
Pergunta: como o GC trabalha em um ambiente assim ? percebo o consumo de memória subindo mas nao utilizo NEW para criação de objetos. Então como pode ocorrer a liberação de RAM ?
não ocorre, objetos estaticos não são removidos pelo GC
ViniGodoy
Vai ocorrer somente nas variáveis que saírem de escopo (ou seja, variáveis locais desses métodos).
Em variáveis estáticas, não há liberação de memória.
Aliás, usar coisas estáticas é uma péssima política quando está trabalhando com multi-thread. Isso maximiza o compartilhamento de recursos, o que reduz drasticamente as possibilidades de paralelismo.
M
mmx
então se cada thread criar um objeto das minhas classes e utilizar os metodos o desempenho será melhor ? eu creio que estou criando mais objetos do que o GC pode limpar
ViniGodoy
Objetos diferentes tem variáveis diferentes e, portanto, minimizam o número de regiões críticas.
A resposta para sua pergunta não é tão simples. Antes de se preocupar com o gc, é melhor se preocupar em entender bem os conceitos de sincronização e multo-threading.
Não otimize antes de realmente ter um problema, e de saber que priblema é esse. E não subestime a capacidade do gc. Ele é MUITO eficiente.