解析网页后是否需要释放资源

huangx 发布于 2009/09/16 17:00
阅读 537
收藏 0

使用过htmlparser的高手,想请教下,在用Parser 解析网页后是不是应该释放资源啊?我做定时抓取网页,但tomcat6在运行一段时间后,从最初的48m 上升到140m左右,如果继续运行,应该还会增长.哪位有这方面的使用心得,请不吝赐教.

Parser parser = new Parser();
        try {
            parser.setURL(url);
            parser.setEncoding(parser.getEncoding());
            log.info("Login On Successfully --->" +url);

            ObjectFindingVisitor visitorForm = new ObjectFindingVisitor(
                    FormTag.class);
           parser.visitAllNodesWith(visitorForm);
           Node[] nodes = visitorForm.getTags();

          /*  解析网页得到内容后,此处是否需要释放资源 */

        } catch (ParserException e) {
            log.error(e.getMessage());
            throw new Exception("login On Failture --->" + url);
        } 

加载中
0
黄平俊
黄平俊

没这么用过~~倒是用过HttpClient来抓数据,HTMLParser来解析抓来的Html内容~~~

0
红薯
红薯

其实一般解析HTML内容,看具体页面的大小,跑到 140M 也算正常,只要不再涨得太离谱就行了~~

0
h
huangx

即使你用HttpClient来抓取数据,不还得是用parser来解析吗?那解析后呢?解析应该是用inputstream来做的。所以我才会怀疑需要有个close的过程。

0
黄平俊
黄平俊

Parser  parser = Parser.createParser(body, "UTF-8");

解析的是String,而不是inputstream!可以去查看Parser的源码,

如果用setURL,来抓网页数据,性能会差一些吧!

0
h
huangx

感谢回复.用seturl好象性能上会差一些,这一点我再做优化.parser解析的的确是String.但应该是把String 读进字符流进行解析吧.public class Stream extends InputStream implements Runnable{}.这是源码里的一个类.

0
h
huangx

各位高高手,给指点指点啊!

0
麦田大圈圈
麦田大圈圈

这还不简单,你看看htmlparser源码不就行了,我以前也用过,没有自己释放资源,应该htmlparser自动就处理了,他把网页读成字符串后,肯定就关闭了流.

0
C
Clotho

不用释放资源.. 不过要parser.reset(),这个比较麻烦

0
JavaGG
JavaGG

现在不习惯用htmlparser了

都是直接分割字符串

哈哈

返回顶部
顶部