Получение утечек памяти с охттп - PullRequest
0 голосов
/ 31 мая 2019

Когда я делаю запрос get к API, снова и снова я вижу, что каждый запрос памяти увеличивается и увеличивается до 1 ГБ оперативной памяти.

закрытие ответа и автозамыкание

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();
}

1 Ответ

0 голосов
/ 31 мая 2019

Вы не закрыли соединение, используйте 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();
            }```
...