Duvida com static e GC

4 respostas
M

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 ?

4 Respostas

yurifw

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

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.

Criado 12 de setembro de 2013
Ultima resposta 12 de set. de 2013
Respostas 4
Participantes 3