J'utilise RandomAccessFile en java. J'ai un problème de fuite de mémoire. J'ai simplifié mon code à ce qui suit:RandomAccessFile Memory Leak
public static void main(String[] args) throws IOException, InterruptedException
{
RandomAccessFile r = new RandomAccessFile(new File("test.dat"), "rw");
r.write(new byte[150000000], 0, 150000000);
r.getFD().sync();
r.close();
r = null;
while (true) { Thread.sleep(1000); }
}
Après l'exécution de ce code (et laisser suffisamment de temps pour GC) l'utilisation de la mémoire rapportée pour l'application est un peu plus de 150Mo.
Qu'est-ce que j'ai manqué? Ou Java est à blâmer?
Java * ne * Mémoire de retour au système d'exploitation, au moins la machine virtuelle Java Oracle ne, bien que très reluctanty. –
@Michael, merci pour cela. –