Java的HttpURLConnecction的getInputStream是否需要close?
問題描述
RT,就醬Java的HttpURLConnecction的getInputStream是否需要close?
這個流是否是系統(tǒng)維護的?因為不是我打開的
問題解答
回答1:養(yǎng)成習慣所有不再用的InputStream和OutputStream都關掉就好了,不管API背后的實現(xiàn)有沒有自動幫你關掉。如果用Java 1.7+寫的話,用try-with-resource處理起來就非常簡單了:
try (InputStream in = urlConnection.getInputStream()) { ...} // 這里會自動調(diào)用 in.close();
類似場景還有:
JDBC的PreparedStatement、ResultSet等都實現(xiàn)了AutoCloseable接口,理論上只要Connection被close掉,由它生成的這些PreparedStatement、ResultSet等也會自動close掉,但強烈建議你產(chǎn)生這些資源的時候用try-with-resource來管理。
ServletRequest/ServletResponse中的getInputStream/getOutputStream等資源也是。
回答2:需要
在并發(fā)操作非常高的情況下, 如果你不關閉, 對系統(tǒng)資源的開銷會比較大.
相關文章:
1. boot2docker無法啟動2. docker-compose中volumes的問題3. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””4. nignx - docker內(nèi)nginx 80端口被占用5. docker容器呢SSH為什么連不通呢?6. 關于docker下的nginx壓力測試7. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.8. node.js - antdesign怎么集合react-redux對input控件進行初始化賦值9. java - SSH框架中寫分頁時service層中不能注入分頁類10. dockerfile - 為什么docker容器啟動不了?

網(wǎng)公網(wǎng)安備