Gerenciamento de memória - Saber quanto de memória está sendo usada em cada "parte" do sistema

Olá, estou desenvolvento uma aplicação relativamente grande, e fiz um teste de memória pelo gerenciador de tarefas do windows.
Testei da seuinte forma:
Abrindo a tela principa do programa, verifiquei quanto o java.exe estava usando de memória - 50MB.
Abrindo uma tela de cadastro de clientes, java.exe ocupando 60MB.
Porém quando fechei a tela de clientes, os 10 MB que teoricamente ela tinha alocado nao foram realocados, continuando com o consumo em 60 MB.

A tal janela de clientes faz o dispose quando é fechada, e botei um listener pra executar um System.gc() mas mesmo assim o problema continua. então se eu for abrindo varias janelas e fechando, o consumo vai ficar nas alturas.

Ouvi falar que o netbeans tem uma ferramenta aonde da pra ver quanto cada variavel tava usando de memória.
Alguem tem uma informação a respeito?
Ou alguma outra dica pra sugerir?

[quote=mateusviccari]Olá, estou desenvolvento uma aplicação relativamente grande, e fiz um teste de memória pelo gerenciador de tarefas do windows.
Testei da seuinte forma:
Abrindo a tela principa do programa, verifiquei quanto o java.exe estava usando de memória - 50MB.
Abrindo uma tela de cadastro de clientes, java.exe ocupando 60MB.
Porém quando fechei a tela de clientes, os 10 MB que teoricamente ela tinha alocado nao foram realocados, continuando com o consumo em 60 MB.

A tal janela de clientes faz o dispose quando é fechada, e botei um listener pra executar um System.gc() mas mesmo assim o problema continua. então se eu for abrindo varias janelas e fechando, o consumo vai ficar nas alturas.

Ouvi falar que o netbeans tem uma ferramenta aonde da pra ver quanto cada variavel tava usando de memória.
Alguem tem uma informação a respeito?
Ou alguma outra dica pra sugerir?[/quote]

O gerenciamento de memória do java é automático. O coletor de lixo remove somente quando há outra coisa para alocar no lugar ou quando não há mais espaço. Isso tem vantagens e desvantagens.

A jvisualvm te dá um monte de ferramentas para fazer o profiler de uma aplicação.

Fora que não é recomendado usar o System.gc()

Tem um tópico no guj que fala sober isso:


Abs!

Tenta assim: [code]Runtime rt = Runtime.getRuntime();

	rt.runFinalization();
	rt.gc();
}[/code]

Se der certo me avisa.

Usar dessa forma é a mesma coisa:

Você pode verificar nesse tópico: http://www.guj.com.br/java/37786-coletor-de-lixo/2

Abs!

sim eu sei como funciona o coletor de lixo mas o que eu queria saber era alguma ferramenta que auxiliasse a ver aonde esta o consumo de memoria no programa…