首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不关闭URLConnection

不关闭URLConnection
EN

Stack Overflow用户
提问于 2018-10-24 07:05:28
回答 1查看 2.8K关注 0票数 2

我有一个方法(getRequest),它打开URLConnection并返回InputStream,这里我不关闭URLConnection。

sendHTTPMessage中,我将关闭InputStream和ObjectInputStream。

因此,它会不会造成问题,因为我还没有关闭URLConnection,根据我的理解,它会打开与服务器的套接字连接吗?

代码语言:javascript
复制
    public InputStream getRequest(String url) throws IOException {
        URL url = new URL(url);
        URLConnection con = url.openConnection();
        con.setUseCaches(false);
        this.sendHeaders(con);
        return con.getInputStream();
    }

    private Object sendHTTPMessage(HashMap<String, Object> params) {
        Object resultobj = null;
        InputStream in = null;
        ObjectInputStream ois = null;

        try {

            in = sendGetMessage(params);
            if (in != null) {
                ois = new ObjectInputStream(in);
                serviceResult = (Object)ois.readObject();
            }
        } catch (Exception var14) {
            logger.error("Error during closing :", var14);
        } finally {
            try {
                if (in != null) {
                    in.close();
                }

                if (ois != null) {
                    ois.close();
                }
            } catch (IOException var13) {
                logger.error("Error during closing :", var13);
            }

        }
        return resultobj;
    }
EN

回答 1

Stack Overflow用户

发布于 2018-10-24 08:00:37

如果您不关闭InputStream,您的连接将在不确定的时间内保持打开,这将在客户端和服务器端保存开放的资源。试试这个测试:

代码语言:javascript
复制
        URL url = new URL("https://www.google.com/");
        List l = new ArrayList();
        for(int i = 0; i< 100000; i++) {
            URLConnection con = url.openConnection();
            InputStream in = con.getInputStream();
            in.close();
            l.add(con);
            System.out.println(i);
        }

运行它,一段时间后,使用netstat命令检查机器上的打开连接。然后停止,删除in.close(),再次运行test并检查netstat。在第二个测试中,您将看到连接保持打开状态,并且它们的数量不断增加。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52962826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档