Ho gia provato con il System.gc(),però non funziona,il fatto è che il gioco dispone anche di una modalità reset,e se uno resetta continuamente la memoria continua a salire,insensatamente,poichè tutti i thread vengono fermati,le variabili vengono messe a null ed altre ottengono altri valori!
Ho utilizzato anche delle musiche tramite questi metodi:
AudioInputStream stream = AudioSystem.getAudioInputStream(new File(percorso));
AudioFormat format = stream.getFormat();
if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
stream = AudioSystem.getAudioInputStream(AudioFormat.Encodi ng.PCM_SIGNED,stream);
}
DataLine.Info info = new DataLine.Info(Clip.class, stream.getFormat());
clip = (Clip) AudioSystem.getLine(info);
clip.open(stream);
Potrebbe essere questo il problema?
Diciamo piu che altro che lo faceva anche senza le musiche però ovviamente doveva caricare meno "roba" e quindi non dava fastidio,ma altrimenti aggiunge cose tipo 20kb a volta!
Inoltre,può essere una cosa strana da dire,ma potrebbe essere un problema della ultima versione java (magari di un aggiornamento),perchè prima non ricordavo si comportasse così (anzi lo faceva con il mediatracker,ma poi avevo risolto mettendolo a null ad ogni reset,ma ora il problema è tornato,senza in realtà aver fatto niente (riprendendo versioni vecchie del programma))
Ho notato inoltre che questa cosa di non rilasciare la RAM da una finestra all'altra non deriva solo dal gioco ma anche dalle altre normalissime finestre (senza ancora aver nemmeno aperto il gioco),se passo da una all'altra non rilascia la memoria!