Problema com File.delete()

Quando ele falou preguiçoso falou de forma genérica. Quando eu falei que a chamada do gc poderia ser desabilita para evitar que alguém use isso para esconder um código mal feito, também me referi de forma genérica . Ninguém aqui quis ofendê-lo, apenas estamo querendo alertar que não se pode confiar em uma chamada ao gc, pois o mesmo pode demorar tempo suficiente que chegue a ponto de afetar a aplicação, só isso.[/quote]

sim, entendemos que tenha sido dito de forma generica, mas não acredito que seja exatamente o que vocês disseram (ao menos não em qualquer caso, pode ser que esse problema só aconteça em um SO especifico pro exemplo… sei la) por que eu tive esse mesmo problema e nem sequer abri algum inputStream, quanto mais esqueci de fechar como vocês disseram, de qualquer forma em certos casos o arquivo simplesmente precisa ser apagado, não tem referência nenhuma de alguém lendo-o como tinha dito e assim mesmo o problema ocorre (experiência própria). Então para apagarmos devemos pagar um preço, ou chamamos Runtime e acabamos com o lado multiplataforma, ou chamamos o gc antes e depois damos o delete ou simplesmente o arquivo não é apagado (a menos que você me diga outra forma de fazer isso…). O gc demorar tantos segundos para apagar um arquivo é mais raro do que ser importante apagar estes arquivos (de repente para não acumularem e ficarem ocupando muito espaço), cabe a quem está envolvido com o processo decidir o que fazer, cada caso é um caso…

quanto a eu ficar ofendido acho meio pouco para chegar a ficar ofendido, mas considero que a explicação se faz necessária numa situação dessas.

Só para não dizer que o System.gc é sempre mau, ou indicativo de preguiça na programação.

Muitas vezes, quando vou escrever um sistema Desktop que processa algo em várias fases distintas (como se fossem batches), ponho um System.gc entre uma fase e outra, até porque

a) Eu não tenho, nesse caso, uma restrição de tempo de espera para uma requisição simples,

e

b) Eu sei que, nesse sistema em particular, um monte de coisas que foram criadas em uma fase não precisam sobreviver para a próxima fase, então eu dou uma “ajudinha” aos algoritmos e indico explicitamente que quero um System.gc nessa mudança de fase, para deixar a memória bem limpa e organizada.