Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
ILNAR_93
Android
235 / 235 / 25
Регистрация: 19.01.2013
Сообщений: 1,830
Записей в блоге: 3
#1

Работа с большими объемами данных - Программирование Android

03.09.2015, 20:08. Просмотров 515. Ответов 17
Метки нет (Все метки)

С вебсервиса скачиваеться JSON с 16ю МБ данными.

Далее ее в StringBuilder, но программа валиться с ошибкой OutOfMemory (Ну в принципе это понятно из-за чего).
Потом эти 16 Мб данных нужно использовать в программе...(В памяти программы в моем случае должно быть 2 таких почти идентичных JSON материала.. = 16*2 мб - возможно и не только...)


Какие пути решения можете посоветовать?

p.s. надеюсь смог объяснить суть...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2015, 20:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с большими объемами данных (Программирование Android):

Работа с большими изображениями - Программирование Android
Изображение хранится в ресурсах приложения. Если оно больше размера экрана, то как его вписать при этом подстроится под размеры экрана? То...

Работа с большими данными - Программирование Android
Добрый день. Существуют ситуации, когда нужно подгрузить и распарсить что-то очень большое, ну, например, адреса Москвы. Если поставить...

Выполнение логических операций с большими объемами данных. - Visual Basic
Ситуация следующая: Имеется два массива байтов, порядка трех мегабайтов (!) каждый. Нужно в третий массив такой же длины поместить...

Разработка приложений, ориентированных на работу с большими объемами данных - .NET
Всем доброго времени суток! На днях столкнулся с весьма тривиальной, но, как оказалось, достаточно сложной проблемой. Все дело в выборе...

Есть ли в Oracle механизмы работы с очень большими объемами данных ? - Oracle
Проблема такая: Есть база, которой пользуемся уже 4 года, структура базы такова, что есть несколько быстро растущих таблиц связанных с...

Какое ограничение в C#.NET на размер массивов? Или что посоветуете для работы с большими объемами данных? - C#
Здравствуйте. Такой вопрос - пытаюсь создать двумерный массив размерностью 100000 на 100000 (тип int). Компилятор говорит мне - "Не надо...

17
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
17.09.2015, 16:04 #16
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ILNAR_93, я не прочитал все сообщения и подумал, что речь идёт про JSON. Да, вы правы, это вторая причина, почему в программах не рекомендуется использовать while ((line = reader.readLine()) != null), однако авторы продолжают везде пихать в своих статьях этот код.
Вам правильно советуют разобраться с потоками. StringBuilder не подойдёт, надо возвращать поток и читать прямо по нему.
Для работы с POST-запросом я использовал код отсюда и переделал, получилось примерно так:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
        BufferedInputStream is = null;
        Reader reader = null;
        String data = null;
        try {
            conn.connect();
            code = conn.getResponseCode();
            if (code >= HTTP_OK && code < HTTP_OK + 100) {
                is = new BufferedInputStream(conn.getInputStream());
                final char[] buffer = new char[1024];
                StringBuilder sb = new StringBuilder();
                reader = new InputStreamReader(is, "UTF-8");
                int len;
                while ((len = reader.read(buffer, 0, buffer.length)) != -1) {
                    sb.append(buffer, 0, len);
                }
                data = sb.toString();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            conn.disconnect();
            try {
                if (is != null) {
                    is.close();
                }
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

Правда, здесь я использую StringBuilder и возвращаю строку, но вы можете его не использовать. Привёл пример, как можно читать кусочками по 1024 байта.
1
ILNAR_93
Android
235 / 235 / 25
Регистрация: 19.01.2013
Сообщений: 1,830
Записей в блоге: 3
17.09.2015, 16:59  [ТС] #17
CoolMind, Спасибо за код и совет)

Просто мне полученный String из файла не сразу весь нужен... А по ходу использования приложения.. Он куками будет загружаться..

p.s. таких файлов будет несколько.. и в определенное время выбирается определенный файл..)

ЕЩЕ раз спасибо за уделенное время)
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
17.09.2015, 18:54 #18
ILNAR_93, пожалуйста! Рад слышать!
0
17.09.2015, 18:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2015, 18:54
Привет! Вот еще темы с ответами:

Видеокарта для работы с большими объемами графики - Видеокарты
Доброй ночи! Прошу помочь в выборе карты, или связки из двух карт. Сейчас на компьютере стоит GF 9800 GT Green с 1GB DDR3 на борту....

Работа с большими массивами данных в текстовом файле - MathCAD
Доброго времени суток. Уважаемые формучане на работе вознила следующая задача которую надо решить в маткад: Существует большой массив...

Работа с большими числами - Assembler
Написала программу, с маленькими числами работает. Подскажите, пожалуйста, как сделать, чтобы с большими числами работала. text segment...

Работа с большими числами - PascalABC.NET
var a,b:double; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru