Métodos Críticos - Pausando GC

Olá pessoal!

Tenho aqui uma aplicação com métodos que devem executar “sozinhos”, ou seja: nada de GC enquanto esses métodos estiverem executando.

Já ouvi dizer, mas infelizmente não me lembro aonde, que é possível “pausar” o GC antes de um trecho de código crítico e “depausando” o GC assim que o método/thread execute. Alguém aqui já viu algo parecido com isso? Alguma dica/ direção/ workaround?

fico eternamente grato!

amigo,
ate onde sei não existe isto não.

o maximo que se pode fazer é chama-lo ANTES da execução destes metodos, com System.gc(), ai a probabilidade de ele ser executado durante os metodos é menor, e nem sobre isto ha garantias pois na especificacao do java esta escrito que este comando chama o coletor mas não a garantias de que ele sera executado. Isto depende da VM, embora em todas as VM que ja vi o System.gc funcioana.

[ ]'s

Opa Rodrigo!
O System.gc() é apenas uma sugestão passada para o GC que esse é um bom momento de executar ou não, o problema é que isso não é garantido. Eu fiz testes adicionando o System.gc() antes (e depois!) do método crítico e infelizmente há momentos em que GC entra em ação exatamente no meio da execução do método.

Olá

Dependendo do que você quer fazer, há métodos em java.util.concurrent que usados junto com boas práticas de programação concorrente e mais uma devida customização do comportamento da GC via linha de comando que roda o Java, sendo Concurrent Mark Sweep um exemplo, que permitem a sua aplicação rodar métodos críticos com razoável segurança.

[]s
Luca

Na verdade não é nada d+: o sistema deve exibir algumas imagens em tela juntamente com alguns sons sincronizadamente (som e imagem ao mesmo tempo). O problema é que o GC pode entrar nesse meio tempo…daí existe um delay entre a exibição da imagem e o toque do som. Será que há necessidade de cair dentro de concurrent para isso? =?

vlw!

Olá

Sempre é bom usar java.util.concurrent nem que seja para aprender. Mas sem esquecer os outros 2 itens: boas práticas e sintonia fina da GC.

[]s
Luca

Legal…já comecei a rever concorrência…faz tempo q eu não via isso e quando vi foi aquela biblioteca pthread de C. Vai ser dolorooooouso…hehehehe

=)

valeu!

[]'s