Un programme simple pour démontrer la fuite de mémoire en Java


Je cherche un programme simple qui peut démontrer une fuite de mémoire en Java.

Merci.

Author: Howard, 2010-10-31

5 answers

 3
Author: Vladimir Ivanov, 2010-10-31 10:35:19

Les fuites de mémoire sont par exemple si vous avez des références qui ne sont plus nécessaires mais ne peuvent pas être capturées par le garbage collector.

Il y a des exemples simples par exemple d'IBM qui montre le principe:

Http://www.ibm.com/developerworks/rational/library/05/0816_GuptaPalanki/

 2
Author: , 2010-10-31 09:21:09
 0
Author: nc3b, 2010-10-31 09:19:48
 Vector v = new Vector();
 while (true)
 {
     byte b[] = new byte[1048576];
     v.add(b);
 }

Cela ajoutera continuellement un octet de 1 Mo à un vecteur jusqu'à ce qu'il manque de mémoire

 0
Author: Aequitas, 2015-08-11 03:25:38

Définissons d'abord ce qu'est une fuite de mémoire dans le contexte Java - c'est une situation où un programme peut contenir par erreur une référence à un objet qui n'est plus jamais utilisé pendant le reste de l'exécution du programme.

Un exemple à cela, serait oublier de fermer un flux ouvert:

class MemoryLeak {

    private void startLeaking() throws IOException {
        StringBuilder input = new StringBuilder();
        URLConnection conn = new URL("www.example.com/file.txt").openConnection();

        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));        

        while (br.readLine() != null) {
            input.append(br.readLine());
        }
    }

    public static void main(String[] args) throws IOException {
        MemoryLeak ml = new MemoryLeak();
        ml.startLeaking();
    }
}
 0
Author: Stas, 2018-09-09 08:18:37