我做的很简单了,一个界面上只有提交按钮和选择列表在加上JEditorPane来显示信息,当显示行数累加到300多行时候,就会出现如下错误
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at javax.swing.text.BoxView.updateLayoutArray(BoxView.java:197)
at javax.swing.text.BoxView.replace(BoxView.java:168)
at javax.swing.text.html.TableView.replace(TableView.java:844)
at javax.swing.text.View.updateChildren(View.java:1117)
at javax.swing.text.View.insertUpdate(View.java:701)
at javax.swing.text.html.TableView.insertUpdate(TableView.java:784)
at javax.swing.text.View.forwardUpdateToView(View.java:1208)
at javax.swing.text.View.forwardUpdate(View.java:1183)
at javax.swing.text.BoxView.forwardUpdate(BoxView.java:222)
at javax.swing.text.View.insertUpdate(View.java:707)
at javax.swing.text.View.forwardUpdateToView(View.java:1208)
at javax.swing.text.View.forwardUpdate(View.java:1183)
at javax.swing.text.BoxView.forwardUpdate(BoxView.java:222)
at javax.swing.text.View.insertUpdate(View.java:707)
at javax.swing.text.View.forwardUpdateToView(View.java:1208)
at javax.swing.text.View.forwardUpdate(View.java:1183)
at javax.swing.text.BoxView.forwardUpdate(BoxView.java:222)
at javax.swing.text.html.TableView.forwardUpdate(TableView.java:825)
at javax.swing.text.View.insertUpdate(View.java:707)
at javax.swing.text.html.TableView.insertUpdate(TableView.java:784)
at javax.swing.text.View.forwardUpdateToView(View.java:1208)
at javax.swing.text.View.forwardUpdate(View.java:1183)
at javax.swing.text.BoxView.forwardUpdate(BoxView.java:222)
at javax.swing.text.View.insertUpdate(View.java:707)
at javax.swing.text.View.forwardUpdateToView(View.java:1208)
at javax.swing.text.View.forwardUpdate(View.java:1183)
at javax.swing.text.BoxView.forwardUpdate(BoxView.java:222)
at javax.swing.text.View.insertUpdate(View.java:707)
at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1486)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1720)
at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:184)
at javax.swing.text.DefaultStyledDocument.insert(DefaultStyledDocument.java:201)
at javax.swing.text.html.HTMLDocument.insert(HTMLDocument.java:232)
at javax.swing.text.html.HTMLDocument$HTMLReader.flushBuffer(HTMLDocument.java:3230)
at javax.swing.text.html.HTMLDocument$HTMLReader.addContent(HTMLDocument.java:3172)
at javax.swing.text.html.HTMLDocument$HTMLReader.blockClose(HTMLDocument.java:3113)
at javax.swing.text.html.HTMLDocument$HTMLReader$BlockAction.end(HTMLDocument.java:2323)
at javax.swing.text.html.HTMLDocument$HTMLReader.handleEndTag(HTMLDocument.java:2222)
at javax.swing.text.html.parser.DocumentParser.handleEndTag(DocumentParser.java:217)
at javax.swing.text.html.parser.Parser.parse(Parser.java:2072)
at javax.swing.text.html.parser.DocumentParser.parse(DocumentParser.java:106)
at javax.swing.text.html.parser.ParserDelegator.parse(ParserDelegator.java:78)
at javax.swing.text.html.HTMLEditorKit.read(HTMLEditorKit.java:230)
at javax.swing.JEditorPane.setText(JEditorPane.java:1292)
at jb.mon.app.appServer.run(appServer.java:328)
java.lang.OutOfMemoryError
java.lang.OutOfMemoryError

解决方案 »

  1.   

    ArrayIndexOutOfBoundsException 
    数组下标超出的异常啊,我想你的程序有问题
    可能有死循环,或者使用数组的方法不正确
      

  2.   

    才300多,java还是顶得住的.看看是不是什么别的原因.不要老盯着JEditorPane
      

  3.   

    当向JEditorPane插入记录大于1200多条地时候就会出现java.lang.OutOfMemoryError的错误
      

  4.   

    你需要JEditorPane里所有的输出信息么?
    如果不需要的话,把前面的删掉就行了,
    事实上也不可能让你无限制的输出信息如果你一定要保存输出的信息,可以向一个文件里面写
    同时删掉前面的行
    比如你只给显示20行信息,有新行就删掉前面的行
      

  5.   

    我现在就是把输入的信息写入日志文件,让JEditorPane最多显示100行记录,但是当日志文件中写入的记录数超过1200行的时候,就会出现java.lang.OutOfMemoryError的错误
      

  6.   

    那你定时清空JEditorPane,可以吗?