Большое количество потоков OkHttp ConnectionPool, вызывающих ошибки OutOfMemory - PullRequest
0 голосов
/ 27 февраля 2019

Я сталкиваюсь с ошибками OutOfMemory в моем приложении, как показано ниже:

OutOfMemoryError: Unable to Create New Native Thread

Я вижу много потоков, как показано ниже:

OkHttp ConnectionPool - priority:5 - threadId:0x00007ff5a0060800 - nativeId:0xc5df - nativeId (decimal):50655 - state:TIMED_WAITING
stackTrace:
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:460)
at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
- locked <0x00000006c12436a0> (a okhttp3.ConnectionPool)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Кажется, я не закрываю ответ соединения какЯ должен, ниже код, который я имею:

Response<T> response = call.execute(); // Call<T> call
if( response.isSuccessful() )
            {
                return response.body();
            }
            else
            {
            ...
            }

Как я могу закрыть ответ?Это то, что я делаю, если знаю, что содержимое будет возвращено:

Response<ResponseBody> response = call.execute(); // Call<ResponseBody> call

if( response.isSuccessful() )
            {
                try (ResponseBody body = response.body())
                {
                    if( body != null )
                    {
                        return new String( body.bytes() );
                    }
                }

                return null;
            }
            else
            {
             ....
            }

Я вижу, что я также не определяю пул соединений для OkHttpClient.Может ли это быть проблемой?Что произойдет, если оно не определено, будет ли оно создавать новые соединения и, следовательно, вызывать эту утечку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...