簡體   English   中英

使用okhttp獲取內存泄漏

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM