When I make a get request to an API, over and over again I see that every request the memory goes up and up until 1gb of ram usage.
closing the response and autoclosable
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();
}
You didn't close the connection, use 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();
}```
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.