大家用 htmlparser提取文本内容时 有没有出现内存溢出呀
public static String getDocument(File html) { String htmlPath = html.getAbsolutePath(); String text = ""; Parser parser = null; try { parser = new Parser(htmlPath); } catch (ParserException e) { e.printStackTrace(); } try { parser.setEncoding("UTF-8"); // parser.setEncoding("gbk"); } catch (ParserException e) { e.printStackTrace(); } HtmlPage visitor = new HtmlPage(parser); try { parser.visitAllNodesWith(visitor); } catch (ParserException e) { e.printStackTrace(); } NodeList nodes = visitor.getBody(); int size = nodes.size(); for (int i = 0; i < size; i++) { Node node = nodes.elementAt(i); text += node.toPlainTextString(); } return text; }我在循环读取HTML文件中的文本内容时 大概到1000+个文件以后
每个HTML文件大小是1M
parser.visitAllNodesWith(visitor);这行会内存溢出
不知道大家有碰到没? 或者给点解决的思路吧?
TOMCAT的内存已经一个G拉
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
谢谢2位的回答
我都试试
别用这东西了,用jsoup吧,简单方便
我认为可能的解决方案有:
第一、
不用String,改为用StringBuffer试试。
第二、
调大Java VM的内存,不过当读取的内容增大到一定程度还会发生同样的问题。
第三、
可以采用分段读取或者读一段存一段(比如存到硬盘中),有点类似操作系统中的缓存(缓存大小有限度,当满了则全部写入,再读)。
不知道能否解决你的问题~
完整异常信息如下: