Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 你的房间用完了吗?可以容纳多少文本,我可以容纳更多吗?_Java_Text_Bigdata - Fatal编程技术网

Java 你的房间用完了吗?可以容纳多少文本,我可以容纳更多吗?

Java 你的房间用完了吗?可以容纳多少文本,我可以容纳更多吗?,java,text,bigdata,Java,Text,Bigdata,我正在为我在素数中发现的模式开发一个可视化工具。以下是StackMath的数学链接:以及StackCodeReview的完整代码: 我的问题似乎是我所在区域的空间不足 错误: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at javax.swing.text.GapContent.allocateArray(Unknown Source) at javax.swing.text.GapVecto

我正在为我在素数中发现的模式开发一个可视化工具。以下是StackMath的数学链接:以及StackCodeReview的完整代码:

我的问题似乎是我所在区域的空间不足

错误:

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");

所以我唯一能想到的是,我必须在文本区域中输入大量文本。我能增加它能容纳的尺寸吗?或者我必须创建一个方法,将一些未显示的文本保存为字符串,并在滚动时重写它?(我真的不想)

快速而肮脏的答案是给自己更多的堆空间:

java-Xmx2g PrimeSandbox
← 例如,为您提供2GB

这是否是一个好的长期解决方案取决于你是否只需要“多一点”,或者你是否有严重的记忆问题


在应用程序中移动字符串不会节省内存。
JTextArea
中显示的字符串不会比类中字段中的字符串占用更多内存。写入磁盘是你唯一的选择。

Ohh所以这与整个程序本身有关,它占用了操作系统提供给它的所有空间?@BumSkeeter是的。这可能只是偶然的机会,例外发生在它发生的地方。您可能存在内存泄漏(例如,在不应该的情况下抓住对象),或者您只需要更多内存。在后一种情况下,增加堆。在前一种情况下,分析可能会对您有所帮助。您能否查看OP中指向我的代码的链接,并告诉我您认为是哪种情况?我敢肯定,这只是因为我的内存不足。我正在处理71K个素数的列表。所以这是一个巨大的数据量。