java.lang.OutOfMemoryError: Could not allocate JNI Env при чтении из сокета

210
30 марта 2018, 12:42

По таймеру слежу за сообщениями от сокет сервера. Со временем программа вылетает. Помогает только периодический реконект сокета. Если закоментировать строку int r = mSocket.getInputStream().read(buf); то ошибки нет. Подскажите пожалуйста. Опыта в java нет совсем. Да и еще замечено что на новом телефоне с Androin 7 не вылетает. Понимаю что идет утечка памяти. Грешил на byte buf[] = new byte[1 * 512]; или new Thread Но нет. Именно int r = mSocket.getInputStream().read(buf)

Вот сам код:

new CountDownTimer(1000 * 60 * 60, 10) {
    byte buf[] = new byte[1 * 512];
    public void onTick(long millisUntilFinished) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    int r = mSocket.getInputStream().read(buf);
                    receiveSocket  = new String(buf, 0, r, "cp1251");
                    Log.d("Dima", receiveSocket);
                } catch (Exception e) {
                      Log.e("dim", e.getMessage());
                }
            }
        }).start();
    }
    public void onFinish() {
        this.start();
    }
}.start();    

Вобщем сейчас так:

        new CountDownTimer(1000 * 60 * 60, 10) {
        byte buf[] = new byte[1 * 512];
        public void onTick(long millisUntilFinished) {
                       try {
                       Log.d("Dima", "123");
                       int r = mSocket.getInputStream().read(buf);
                       String str  = new String(buf, 0, r, "cp1251");
                       Log.d("Dima", str);
                    } catch (Exception e) {
                    }
        }
        public void onFinish() {
            this.start();
        }
    }.start();

Сейчас не вылетает. Но и из сокета не читает. Коннект с сервером есть. В дебаг строка "123" идет, но переменная str нет. Ошибок не видать. Очень жду помощи

READ ALSO
Цикл создания кнопок в android studio

Цикл создания кнопок в android studio

Всем привет, помогите разобраться, на activity есть главная кнопка, нажатие на неё должно приводить к созданию дочерней кнопки, след нажатие на главную...

231
Перенос текста с одной TextView на другую

Перенос текста с одной TextView на другую

Имеется две TextView и довольной большой текст, не помещающийся целиком на одну TextViewКаким образом можно сделать перенос не помещающегося текста...

155
класс StringBuffer и StringBuilder

класс StringBuffer и StringBuilder

В чем разница между классами StringBuffer и StringBuilder в языке Java?

164
Где использовать volataile

Где использовать volataile

Модификатор volatile гарантирует видимость операций с полем и сохранение их последовательностиВолатильную переменную можно, например, использовать...

204