Простая программа для демонстрации утечки памяти в Java - PullRequest
5 голосов
/ 31 октября 2010

Я ищу простую программу, которая может продемонстрировать утечку памяти в Java.

Спасибо.

Ответы [ 5 ]

3 голосов
/ 31 октября 2010
2 голосов
/ 31 октября 2010

Утечка памяти, например, если у вас есть ссылки, которые больше не нужны, но не могут быть обнаружены сборщиком мусора.

Есть простые примеры, например от IBM, которая показывает принцип:

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

0 голосов
/ 09 сентября 2018

Давайте сначала определим, что такое утечка памяти в контексте Java - это ситуация, когда программа может ошибочно удерживать ссылку на объект, который никогда больше не используется во время остальной части выполнения программы.

Примером этого было бы забыть закрыть открытый поток:

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 голосов
/ 11 августа 2015
 Vector v = new Vector();
 while (true)
 {
     byte b[] = new byte[1048576];
     v.add(b);
 }

Это будет непрерывно добавлять 1 МБ байта к вектору, пока он не исчерпает память

0 голосов
/ 31 октября 2010

Отличный пример из великой книги: http://www.informit.com/articles/article.aspx?p=1216151&seqNum=6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...