Java 限制JTextPane内存使用

Java 限制JTextPane内存使用,java,memory-management,jtextpane,Java,Memory Management,Jtextpane,我有一个应用程序,它不断地在套接字上接收数据,然后将这些数据记录到一个文件中,同时在JTextPane中显示这些数据。当然,当数据写入JTextPane的底层文档时,内存使用会继续增加 有没有一种简单的方法来限制JTextPane允许使用的内存?我希望JTextPane的工作方式与典型命令shell的命令历史工作方式类似。只需检查内容并相应地将其擦除到最大缓冲区大小即可。。由于它是一个JTextPane,您可以使用textpane使用的文档类: void clampBuffer(int inco

我有一个应用程序,它不断地在套接字上接收数据,然后将这些数据记录到一个文件中,同时在JTextPane中显示这些数据。当然,当数据写入JTextPane的底层文档时,内存使用会继续增加


有没有一种简单的方法来限制JTextPane允许使用的内存?我希望JTextPane的工作方式与典型命令shell的命令历史工作方式类似。

只需检查内容并相应地将其擦除到最大缓冲区大小即可。。由于它是一个
JTextPane
,您可以使用textpane使用的文档类:

void clampBuffer(int incomingDataSize)
{
   Document doc = textPane.getStyledDocument();
   int overLength = doc.getLength() + incomingDataSize - BUFFER_SIZE;

   if (overLength > 0)
   {
      doc.remove(0, over_length);
   }
}
这只是我写的一个片段,没有亲自检查。。这只是给你一个想法。当然,在将文本添加到textPane之前应该运行它


顺便说一句,如果您没有使用
JTextPane
的富编辑器功能,我建议您使用更轻的
JTextArea

不,您必须在添加文本时计算字符数,如果您认为太多,则删除一些字符


请注意,JTextPane下面有一个DocumentModel,它可以让您访问字符计数,也可以让删除更方便。

这不起作用,您可能会认为它起作用,但它不起作用,我的一个应用程序也有同样的问题。想象一个JTextPane,您不断地从一个源向它添加行,如果行号超过100,删除行0,然后添加新行。这将使内存使用保持在大致相同的水平,对吗?错了。。。随着时间的推移,我的java应用程序爆炸了,一个小时后,内存使用量已经达到170MB,只有100行小文本。我完全不知道为什么,或者如何解决这个问题。。。