У меня была программа Java, которая использовала StringBuilder
для создания строки из входного потока, и в итоге она вызвала ошибку из памяти, когда строка слишком длинная. Я попытался разбить его на более короткие строки и сохранить их в ArrayList
, и это позволило избежать OOM, хотя я пытался хранить то же количество данных. Почему это?
Мое подозрение в том, что с одной очень длинной строкой компьютер должен найти одно смежное место в памяти для него, но с ArrayList
он может использовать несколько меньших мест в памяти. Я знаю, что память может быть сложной на Java, поэтому у этого вопроса может не быть прямого ответа, но, надеюсь, кто-то может поставить меня на правильный путь. Спасибо!