我想从文本文件中读取数据,该文件是.html中的10-K SEC报告(大小约为3MB)。首先,我编写了具有这样功能的代码以准备文件:
p6 = Pattern.compile("$| |—|​|—|’| ");
private void preparerep() {
System.out.println("free m " + Runtime.getRuntime().freeMemory()/1048576);
System.out.println("used m " + (Runtime.getRuntime().maxMemory()-Runtime.getRuntime().freeMemory())/1048576);
System.out.println("all m " + Runtime.getRuntime().maxMemory()/1048576);
StringBuffer modified = new StringBuffer();
m4 = p6.matcher(rawrep);
while(m4.find())m4.appendReplacement(modified, " ");
m4.appendTail(modified);
rawrep = modified.toString();
rawrep = rawrep.toLowerCase();
pages = rawrep.split("page-break");
System.out.println("found pages " + pages.length);
}
此代码循环执行。问题是,在对不同文件执行了几次之后,它在第while(m4.find())m4.appendReplacement(modified, " ");
行中抛出了Out of Memory错误代码。我的代码中是否存在内存泄漏?还是只是我的服务器没有足够的内存(tomcat为此应用程序仅提供了180mb)?如果是服务器故障,如何在Ubuntu中为tomcat设置更多的堆大小?