В JTextArea закончилось место? Сколько текста может поместиться, могу ли я поместиться больше?

Я работаю над визуализатором для шаблона, который я нашел в простых числах. Вот ссылка на математику об этом из StackMath:Шаблоны в простых числах и полный код из StackCodeReview:Оптимизация кода

Кажется, моя проблема в том, что мне не хватает места в моем JTextArea.

Ошибки:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at javax.swing.text.GapContent.allocateArray(Unknown Source)
 at javax.swing.text.GapVector.resize(Unknown Source)
 at javax.swing.text.GapVector.shiftEnd(Unknown Source)
 at javax.swing.text.GapContent.shiftEnd(Unknown Source)
 at javax.swing.text.GapVector.open(Unknown Source)
 at javax.swing.text.GapVector.replace(Unknown Source)
 at javax.swing.text.GapContent.insertString(Unknown Source)
 at javax.swing.text.AbstractDocument.handleInsertString(Unknown Source)
 at javax.swing.text.AbstractDocument.insertString(Unknown Source)
 at javax.swing.text.PlainDocument.insertString(Unknown Source)
 at javax.swing.JTextArea.append(Unknown Source)
 at PrimeSandbox.main(PrimeSandbox.java:67)

Строка 67:

 screen.append(Arrays.toString(primesLL.toArray()) + "\n");

Так что единственное, что я могу понять, это то, что у меня слишком много текста в TextArea. Могу ли я увеличить размер, который он может вместить? Или я должен создать метод для сохранения части не отображаемого текста в строку и перезаписи его при прокрутке? (Я действительно не хочу)


person Community    schedule 25.04.2013    source источник


Ответы (1)


Быстрый и грязный ответ - дать себе больше места в куче:

java -Xmx2g PrimeSandbox дает вам 2 ГБ, например

Является ли это хорошим долгосрочным решением, зависит от того, нужно ли вам просто «немного больше» или у вас есть безудержная проблема с памятью.

Вы не добьетесь экономии памяти, перемещая строки внутри своего приложения. Строка, отображаемая в JTextArea, не будет занимать больше памяти, чем строка в поле в классе. Запись на диск будет вашим единственным другим вариантом.

person Duncan Jones    schedule 25.04.2013
comment
О, так это связано со всей программой, она занимала все пространство, которое ей давала ОС? - person ; 25.04.2013
comment
@БумСкитер Да. Это может быть просто случайность, что исключение произошло там, где оно произошло. У вас либо есть утечка памяти (например, удерживание объектов, когда вы не должны), либо вам просто нужно больше памяти. В последнем случае увеличьте кучу. В первом случае вам может помочь профилирование. - person Duncan Jones; 25.04.2013
comment
Можете ли вы посмотреть ссылку на мой код в OP и сообщить мне, в каком случае вы думаете, что это? Я почти уверен, что у меня просто закончилась память. Я работаю со списком из 71K простых чисел. Итак, это огромный объем данных. - person ; 25.04.2013