[英]Getting memory leaks with okhttp
當我向API發出get請求時,我一遍又一遍地看到內存上升的所有請求,直到1gb的ram使用。
關閉響應和自動分解
final OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(5, TimeUnit.SECONDS)
.writeTimeout(5, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url("https://api.ipify.org?format=json")
.addHeader("User-Agent", "Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36")
.build();
try (Response response = client.newCall(request).execute()) {
ResponseBody s = response.body();
assert s != null;
System.out.println(s.toString());
s.close();
} catch (IOException e) {
e.printStackTrace();
}
你沒有關閉連接,使用response.close();
final OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(5, TimeUnit.SECONDS)
.writeTimeout(5, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url("https://api.ipify.org")
.addHeader("User-Agent", "Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36")
.build();
try (Response response = client.newCall(request).execute()) {
ResponseBody reponseBody = response.body();
assert reponseBody != null;
String ip = reponseBody.string();
System.out.println(ip);
response.close();
reponseBody.close();
} catch (IOException e) {
e.printStackTrace();
}```
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.