我正在研究我在素数中找到的模式的可视化工具。以下是StackMath的数学链接:Patterns In Primes以及StackCodeReview的完整代码:Optimization of the Code
我的问题似乎是我在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中需要很多文本。我可以增加它可容纳的尺寸吗?或者我必须创建一个方法来保存一些未显示的文本到字符串并在滚动时重写它? (我真的不想)
答案 0 :(得分:0)
快速而肮脏的答案是给自己更多的堆空间:
java -Xmx2g PrimeSandbox
←给你2GB,例如
这是否是一个很好的长期解决方案取决于你是否只需要“多一点”,或者你是否有一个猖獗的内存问题。
通过在应用程序中移动字符串,您将无法节省任何内存。显示在JTextArea
中的字符串不会比类中字段中的字符串更加占用内存。写出磁盘是你唯一的另一种选择。