这段代码对您来说还不错吗?

HttpURLConnection connection = null;
try {connection = (HttpURLConnection) url.openConnection();try (InputStream in = url.getInputStream()) {return streamToString(in);}
} finally {if (connection != null) connection.disconnect();
}

看起来不错–它打开一个连接,从中读取,关闭输入流,释放连接,仅此而已。 但是,在运行一些性能测试并试图找出瓶颈问题时,我们发现disconnect()看起来并不那么好–当我们停止断开连接时,传出连接的数量是原来的两倍。 这是javadoc:

表示在不久的将来不太可能向服务器发出其他请求。 调用disconnect()并不意味着可以将此HttpURLConnection实例重新用于其他请求。

在类itslef上:

如果持久连接当时处于空闲状态,则调用disconnect()方法可能会关闭基础套接字。

这仍然不清楚,但是给我们一个暗示,还有更多的东西。 读取几个计算器的和java.net答案(后1 , 2 , 3 , 4 ),并且还对Android文档相同的类,它是从Oracle实现实际上不同的,事实证明, .disconnect()实际关闭(或在Android的情况下可能会关闭)基础套接字。

然后,我们可以找到这部分文档 (它在javadoc中进行了链接,但是在调用断开连接时并没有立即变得很重要),这为我们提供了全貌:

keep.alive属性(默认值:true)指示套接字可以被后续请求重用。 通过打开与服务器的连接(支持保持活动状态)来工作,然后不再需要打开套接字的开销。 默认情况下,最多重复使用5个此类套接字(每个目标)。 您可以通过设置http.maxConnections属性来增加此池的大小。 但是,将其增加到10、20和50之后,传出请求的数量没有明显改善。

但是,当我们使用池化连接管理器从HttpURLConnection切换到apache http client时 ,每秒发出的连接数量增加了3倍。 而这并没有对其进行微调。

负载测试,即用尽可能多的请求轰炸目标服务器,听起来像一个小众的用例。 但是实际上,如果您的应用程序在每个请求中调用了堆栈中的Web服务或外部服务,那么您将遇到相同的问题–您每秒可以向目标服务器发出更少的请求,因此,每秒响应您的用户的请求更少。

这里的建议是:几乎总是喜欢apache http客户端 –它具有更好的API方式和更好的性能,而无需了解其在下面的功能。 但也要注意同样的注意事项–检查池大小和连接重用 。 如果使用HttpURLConnection ,请在阅读连接响应后不要断开连接,请考虑增加套接字池的大小,并注意相关问题 。

翻译自: https://www.javacodegeeks.com/2014/09/caveats-of-httpurlconnection.html

HttpURLConnection的警告相关推荐

  1. Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)

    问题描写叙述 当我们使用SpringMVC作为服务端的框架时,有时不仅仅要应对web前端(jsp.javascript.Jquery等)的訪问请求,有时还可能须要响应Android和JavaSE(桌面 ...

  2. python 把一个字典赋值给一个空的字典,或者是列表赋值给一个空的列表显示黄色警告

    如下图看到的显示一个黄色的警告,但是不影响打印结果 或者是list 同样显示警告 最后测试发现不需要重新自定义一个空的字典或者空的列表,直接赋值就行如下

  3. 警告 '_'用作标识符, JavaSE8 之后的发行版中可能不支持使用'_'作为标识符

    今天ui给图导入项目之后运行出现下图的警告 然后有弹出,看下图就知道那个图片命名开头有 下划线_ 找到加载图片的地方 果然图片命名不正确,更改图片的名字之后警告即可消失 关于as 图片命名规则,可以看 ...

  4. HttpUrlConnection底层实现和关于java host绑定ip即时生效的设置及分析

    最近有个需求需要对于获取URL页面进行host绑定并且立即生效,在java里面实现可以用代理服务器来实现:因为在测试环境下可能需要通过绑定来访问测试环境的应用 实现代码如下: public stati ...

  5. 屏蔽Drupal中的“Notice: Undefined index”警告

    原因:drupal默认使用E_ALL,即输出所有错误和警告.我们只需要修改错误显示级别即可. 方法: 1. 打开\sites\default\settings.php 追加一行 ini_set('er ...

  6. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  7. c 远程编辑linux文件,makefile - 在远程Linux机器上编译C ++ - “检测到时钟偏差”警告...

    makefile - 在远程Linux机器上编译C ++ - "检测到时钟偏差"警告 我通过PuTTY和WinSCP连接到我大学的小型Linux集群,使用后者传输文件,并使用前者编 ...

  8. 安装vim-go插件之后遇到的gopls警告信息不消失的问题的解决方法

    原由 因为新冠肺炎疫情蔓延,2020年初宅在家里的这一个多月,我手头只有一台自己的retina MacBook Pro(后文简称rMBP),公司配发的笔记本过年放假没有带回家,年后公司远程办公,需要电 ...

  9. 转载iOS开发中常见的警告及错误

    iOS警告收录及科学快速的消除方法   前言:现在你维护的项目有多少警告?看着几百条警告觉得心里烦么?你真的觉得警告又不是错误可以完全不管么? 如果你也被这些问题困惑,可以和我一起进行下面的操作.其实 ...

最新文章

  1. CSS浮动元素特点有什么
  2. 985 211 PHP,985 211是什么意思
  3. Linux在任务栏上找不到最小化窗口的解决方法
  4. echat 图表动态数据生成,渲染,自定义Y轴坐标值
  5. 摩托车午夜飙车撞进公交车下 肇事车主当场死亡
  6. mysql所支持的比较运算符_MySQL比较运算符一览表(带解析)
  7. 计算机用户权限设置不了,电脑中怎样设置everyone权限
  8. Apollo 在Windows下安装使用
  9. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——J题 这是一题简单的模拟
  10. 华为电脑笔记本_华为笔记本电脑屏幕质量竟如此糟糕!
  11. android jni示例_Android动画示例
  12. 深入解析Windows操作系统(笔记7)
  13. 网络编程练手小项目---英英词典
  14. 墨刀原型设计工具学习体会——临摹网易云音乐App
  15. 阿里云服务器ECS测评
  16. 谷歌将英文网站翻译成中文
  17. 还记的 破坏之王 里面的 锁吗,锁住 断水流大师兄
  18. iomega ix2 Android,Lenovo Iomega ix2系统安装
  19. 医学人工智能读书会与黄智生教授简历(公号回复“医学AI读书会”下载PDF资料,欢迎转发、赞赏、支持科普)
  20. 【电源设计】01电源参数及LDO

热门文章

  1. 2019蓝桥杯省赛---java---B---7(外卖店优先级)
  2. 2017蓝桥杯省赛---java---C---1(外星日历)
  3. 系统架构设计师考试4
  4. SpringMVC控制器方法获取参数时@RequestParam注解加与不加的区别
  5. JSON转换工具---jackson
  6. javafx 图标_JavaFX技巧32:需要图标吗? 使用Ikonli!
  7. java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化
  8. ibm收购red hat_IBM将收购Red Hat:面向Java的初衷
  9. cuba.platform_CUBA Platform 6.3的新增功能
  10. activiti异步执行_对基于消息队列的Activiti异步执行器进行基准测试