我的程序是一个网络抓取工具,它一直停留在一个显然对应于随机中文网站的网址上。由于某种原因,它没有抛出异常并且连接没有超时。我原以为这些线会阻止它。
static URLConnection in;
in = curURL.openConnection();
in.setConnectTimeout(2000);
pageSource = new StreamedSource(in);
我几乎肯定这是问题,对内存泄漏的堆转储的任何检查都没有发现。
答案 0 :(得分:1)
setConnectTimeout()
仅控制建立连接的超时时间。一旦启动,它可以持续很长时间(基本上直到服务器关闭它)。例如,您可能通过慢速链接下载非常大的文件。
一种解决方案是添加监视连接的监视程序线程,并关闭超过某个时间限制的监视程序线程。