Jul 07, 2011 20:54
Очень легко получается, если последовательно обрабатывать много больших текстов. Схема такая:
1. Получить текст
2. Вырезать нужный кусок с помощью s.substring()
3. ????
4. PROFIT!
А все потому, что для оптимизации .substring() не создает новую строку, а использует существующую.
Все это тривиально решается с помощью new String(s.substring())
Leave a comment
Comments 5
(The comment has been removed)
String фактически обертка над char[]. Когда делаешь s.substring(), то создается новый объект над тем же char[], только дополнительно указаны offset и length.
Если результат дополнительно обернуть в new String() то будет создана новая строка с новыми char[].
Reply
(The comment has been removed)
Т.е. если загрузить 1000 текстов по 100 тыс. знаков, а потом из каждого взять всего по два символа с помощью substring, то как было 200М занято, так и останется.
Reply
Reply
Reply
Leave a comment