简体   繁体   中英

Getting memory leaks with okhttp

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM