Домой Учебники по Java и J2EE Java Iterator: Сценарий OutOfMemory (OOM)

Java Iterator: Сценарий OutOfMemory (OOM)

565
0

Этот простой пример объясняет, как выполнять итерацию через Java Iterator и избегать возможного OutOfMemory (OOM) в Java. Этот пост хранится в Java Web Tutorial.

Возможная причина : забыть использовать Iterator.next() внутри петли.

Хороший код: ниже примера просто итератор через ArrayList (Collection) и возвращает то же значение с помощью java.util.Iterator ,

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
пакет ком . хрустеть ;
Импортировать Java. Util. ArrayList ;
Импортировать Java. Util. Итератор ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyIteratorOOM {
общественности статический недействительным main ( Строка [ ] аргументы ) {
ArrayList Компания знак равно новый ArrayList ( ) ;
компания. добавить ( eBay ) ;
компания. добавить ( «Paypal» ) ;
компания. добавить ( Google ) ;
Iterator comapnyIterator знак равно компания. итератор ( ) ;
ИНТ я = 1 ;
while ( comapnyIterator . hasNext ( ) ) {
строка название компании знак равно ( Строка ) comapnyIterator . следующий ( ) ;
Система. вне. печать ( я + ) ;
Система. вне. println ( companyName ) ;
я ++ ;
}
}
}

Выход:

1
2
3
1 eBay
2 Paypal
3 Google

Неверный код: теперь просто закомментируйте две строки кода выше.

Джава
1
2
// String companyName = (String) comapnyIterator.next ();
// System.out.println (companyName);

Output: Вы должны увидеть, как ваша Java-программа входит в бесконечный цикл, который в конечном итоге вызывает OOM.

Какова лучшая практика? Всегда используйте расширенную Java 8 для цикла .

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
пакет ком . хрустеть ;
Импортировать Java. Util. ArrayList ;
Импортировать Java. Util. Итератор ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyIteratorOOM {
общественности статический недействительным main ( Строка [ ] аргументы ) {
ArrayList Компания знак равно новый ArrayList ( ) ;
компания. добавить ( eBay ) ;
компания. добавить ( «Paypal» ) ;
компания. добавить ( Google ) ;
// Тот же пример, что и выше, но улучшенный цикл.
за ( Строка s : компания ) {
     Система. вне. println ( s ) ;
}
}
}

Как я могу проверить, увеличивается ли использование памяти с течением времени?

  • Запустите эту программу
  • Перейдите в терминал MacOS (в Mac) или в командную строку (в Windows)
  • Введите: jConsole и Enter
  • Выберите процесс, связанный с вашей Java-программой, как показано на диаграмме ниже

Иногда эта мелочь может привести к утечке памяти / OOM в крупных производственных проектах.

Java Iterator: Сценарий OutOfMemory (OOM)

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Как отправить HTTP-запрос и получить ответ в Java?

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь