日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpClient的释放问题

發(fā)布時間:2024/8/24 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpClient的释放问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近遇到了這樣一個問題,在Android開啟StrictMode的時候,會拋出一個異常如下:

04-01 16:07:56.864: E/StrictMode(26867): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.?
04-01 16:07:56.864: E/StrictMode(26867): java.lang.Throwable: Explicit termination method 'close' not called 04-01 16:07:56.864: E/StrictMode(26867): ????????at dalvik.system.CloseGuard.open(CloseGuard.java:184)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:271)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at com.android.org.conscrypt.OpenSSLSocketImpl.waitForHandshake(OpenSSLSocketImpl.java:598)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:560)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.io.SocketInputBuffer.(SocketInputBuffer.java:70)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:172)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)?
04-01 16:07:56.864: E/StrictMode(26867): ????????at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 異常大概是說資源沒有釋放,需要顯示的調(diào)用close方法。從log上看是網(wǎng)絡(luò)訪問時出現(xiàn)的問題(我使用的是HttpClient)。 但是在關(guān)閉StrictMode的時候程序可以完全正常的運行。原因何在呢? 通過查看HttpClient官方文檔發(fā)現(xiàn),在HttpClient請求結(jié)束后需要銷毀HttpEntity,這樣才可以使網(wǎng)絡(luò)連接返回連接池等待下一次重用(如果不需要重用的話也可以直接關(guān)掉連接)。 官方推薦的HttpEntity銷毀方法:HttpEntity#consumeContent 在查看代碼時發(fā)現(xiàn),HttpEntity并沒有銷毀。可是其他網(wǎng)絡(luò)請求部分的HttpEntity也都沒有銷毀,為什么只有這一個網(wǎng)絡(luò)請求會報錯呢?而且代碼中有監(jiān)聽網(wǎng)絡(luò)超時并關(guān)掉連接的處理,為什么還會出現(xiàn)這個問題呢? 仔細(xì)查看發(fā)現(xiàn),出現(xiàn)問題的部分與其他部分稍有不同。出現(xiàn)問題的網(wǎng)絡(luò)請求在解析響應(yīng)的時候,并不需要解析Entity,他的響應(yīng)結(jié)果是放在Headers里面的。也就是說這部分代碼在請求結(jié)束的時候沒有調(diào)用HttpResponse#getEntity#getContent方法。 查看HttpClient文檔發(fā)現(xiàn)getContent方法也可以使Entity銷毀。 所以就是這個原因使StrictMode拋出資源未釋放的異常。 因為有了網(wǎng)絡(luò)超時監(jiān)聽的處理,所以在關(guān)閉StrictMode的時候并不會出現(xiàn)什么問題,因為沒有釋放的連接會等到網(wǎng)絡(luò)超時的時候會被釋放。 在使用HttpClient時一定要注意資源的釋放。即使有網(wǎng)絡(luò)超時自動關(guān)閉連接的監(jiān)聽,StrictMode也會報告沒有釋放資源的異常,因為連接不會立即釋放,需要等待超時時間的到來才會release,這樣影響了程序的性能。 附HttpClient源碼分析: 1.BasicHttpEntity#getContent源碼: 在getContent方法中將contentObtained置為true;標(biāo)記content已經(jīng)被獲取過了,在其他地方檢測這個標(biāo)記,如果資源被獲取過,那么就會release掉這個連接。 2.BasicHttpEntity#consumeContent源碼: 關(guān)閉content(content類型為InputStream) 3.EntityUtils#toString 在EntityUtils#toString方法的最后直接進(jìn)行了reader.close();因此直接調(diào)用EntityUtils#toString方法后相當(dāng)于調(diào)用了HttpEntity#consumeContent方法

轉(zhuǎn)載于:https://www.cnblogs.com/younghome/p/4609022.html

總結(jié)

以上是生活随笔為你收集整理的HttpClient的释放问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国内少妇毛片视频 | 超碰在线免费公开 | 欧美1234区 | 精品一区二区三区四 | 欧美日韩成人在线观看 | 欧美黄色大片免费看 | 一区二区有码 | 在线天堂v | 最新不卡av | 又欲又污又肉又黄短文 | 99热这里只有精品66 | 天堂91| 中文字幕第20页 | 黄色片免费在线观看 | h片在线观看视频 | 色片免费看 | 亚洲情欲网 | 日韩欧美a级片 | 日日日操操操 | 亚洲欧洲久久久 | 少妇视频网站 | 国产一区二区自拍视频 | 国产裸体视频网站 | 激情文学亚洲色图 | 国精产品一区一区三区在线 | 久久久久逼 | xxxx日本高清 | av在线免播放器 | 国产卡一卡二卡三无线乱码新区 | free性欧美hd精品4k | 国产精品字幕 | 久久偷拍免费视频 | 日韩电影在线观看一区 | 午夜tv影院 | 99久久久国产精品 | xxxⅹ少妇少妇xxxx | 中文字幕在线免费观看视频 | 中文字幕有码在线播放 | 操欧美美女 | 久久岛国| 日本成人三级 | 亚洲国产一区在线观看 | 亚洲福利电影网 | 亚洲第一免费网站 | 中文有码在线观看 | 少妇高潮一区二区三区99小说 | 午夜一级视频 | 国内毛片毛片毛片毛片 | 欧美福利视频一区二区 | www.色午夜.com| 天天操夜夜爱 | 欧美日韩精品三区 | 天天操天天插 | 在线国产区 | 在线观看国产黄色 | 日韩欧美国产一区二区三区 | 中文字幕亚洲第一 | 国产精品亚洲一区 | 久久精品国产大片免费观看 | 免费看黄色一级视频 | 欧美激情videos | 国产妇女视频 | 中国少妇色 | 一区二区成人在线 | 午夜视频在线观看免费视频 | 欧美v在线| 午夜激情在线播放 | 男女啪啪资源 | 日韩国产精品久久 | 不卡av免费| 国产污视频 | 国产一级特黄aaa大片 | 99国产精品久久久 | 久久久一区二区三区 | 在线免费亚洲 | 性久久| 大黄一级片 | 久久久久国产视频 | 特黄一区| 熟女俱乐部一区二区 | 国产91精品看黄网站在线观看 | 理想之城连续剧40集免费播放 | 午夜羞羞影院 | 秋霞福利网 | 亚洲三级成人 | 国产三级aaa| 欧美一级性视频 | 四虎影院www| 吸咬奶头狂揉60分钟视频 | 中出 在线 | 九九热精品免费视频 | 免费a在线观看播放 | 日本东京热一区二区三区 | 精品国产av色一区二区深夜久久 | 国产精品久久久久免费 | 黄色片成人 | 欧美日韩网站 | 日韩大片在线观看 | 亚洲久久在线 |