Java的HttpURLConnecction的getInputStream是否需要close?
問題描述
RT,就醬Java的HttpURLConnecction的getInputStream是否需要close?
這個流是否是系統(tǒng)維護(hù)的?因?yàn)椴皇俏掖蜷_的
問題解答
回答1:養(yǎng)成習(xí)慣所有不再用的InputStream和OutputStream都關(guān)掉就好了,不管API背后的實(shí)現(xiàn)有沒有自動幫你關(guān)掉。如果用Java 1.7+寫的話,用try-with-resource處理起來就非常簡單了:
try (InputStream in = urlConnection.getInputStream()) { ...} // 這里會自動調(diào)用 in.close();
類似場景還有:
JDBC的PreparedStatement、ResultSet等都實(shí)現(xiàn)了AutoCloseable接口,理論上只要Connection被close掉,由它生成的這些PreparedStatement、ResultSet等也會自動close掉,但強(qiáng)烈建議你產(chǎn)生這些資源的時候用try-with-resource來管理。
ServletRequest/ServletResponse中的getInputStream/getOutputStream等資源也是。
回答2:需要
在并發(fā)操作非常高的情況下, 如果你不關(guān)閉, 對系統(tǒng)資源的開銷會比較大.
相關(guān)文章:
1. javascript - vue 移動端的input 數(shù)字輸入優(yōu)化2. java - mongodb分片集群下,count和聚合統(tǒng)計問題3. java - 自己制作一個視頻播放器,遇到問題,用的是內(nèi)置surfaceview類,具體看代碼!4. android - java 泛型不支持?jǐn)?shù)組,那么RxJava的Map集合有什么方便的手段可以定義獲得一串共同父類集合數(shù)據(jù)呢?5. 服務(wù)器端 - 采用nginx做web服務(wù)器,C++開發(fā)應(yīng)用程序 出現(xiàn)拒絕連接請求?6. 為什么我ping不通我的docker容器呢???7. 關(guān)于docker下的nginx壓力測試8. python - pandas按照列A和列B分組,將列C求平均數(shù),怎樣才能生成一個列A,B,C的dataframe9. javascript - 有什么兼容性比較好的辦法來判斷瀏覽器窗口的類型?10. java - 靜態(tài)屬性中的賦值和靜態(tài)代碼塊中的賦值有什么區(qū)別?
