1

我的程序是一个网络爬虫,它被困在一个显然对应于一个随机中文网站的 URL 上。由于某种原因,它没有抛出异常并且连接没有超时。我原以为这些线会阻止这种情况。

static URLConnection in;
in = curURL.openConnection();
in.setConnectTimeout(2000);
pageSource = new StreamedSource(in);

我几乎可以肯定这是问题所在,对堆转储内存泄漏的任何检查都没有结果。

4

1 回答 1

1

setConnectTimeout()只控制建立连接的超时时间。一旦启动,它可以持续很长时间(基本上直到服务器关闭它)。例如,您可能正在通过慢速链接下载一个非常大的文件。

一种解决方案是添加一个看门狗线程来监视连接并关闭超过某个时间限制的连接。

于 2013-07-08T16:58:35.287 回答