java 内存溢出问题,求高手指导~

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:45:39
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuffer.append(Unknown Source)
at IRdll.IRSplit.splitFile(IRSplit.java:119)
at IRdll.IRSplit.splitFiles(IRSplit.java:240)
at test.test.main(test.java:31)

这个事错误提示,指向的是这句:
ts=ts.replaceAll("<[a-zA-Z0-9]*[^<>]+>", "");
stringb.append(splitSentence(ts));
stringb是一个字符缓冲去,ts是从文件中读到的字符串,去掉标签后,分词,加到缓冲区,加到一定程度判断缓冲区是不是满了,是的话就写文件,清空stringb,为什么还出现现在这种内存溢出呢?

从异常的堆栈来看,你的这个错误跟stringb没关系.关键是java.util.Arrays.copyOf(Unknown Source)
,看样子是你的这个ts 字符串太大了.
这个ts代表整个文件的内容吧?
如果是这样的话.
可以试着读一行.处理一行

是 实际内存满了