|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
Работа с большими данными31.08.2016, 12:47. Показов 1151. Ответов 11
Метки нет (Все метки)
Добрый день.
Существуют ситуации, когда нужно подгрузить и распарсить что-то очень большое, ну, например, адреса Москвы. Если поставить парсить напрямую сразу всё, то, как правило, памяти телефона не хватит. Я делаю по частям в разных окнах, после окончания процесса перезапускаю окно, но бывают случаи, когда это слабо помогает, в процессе начинает глючить прогрессбар, затем гаснет экран и тп, вплоть до завершения приложения. Интересует какие есть методики, хитрости и прочее для решения такого рода задач. Плюс ещё интересно, как выделяется память для приложения. Я брал для тестов телефон с 2гб оп чистый, а на приложение выделялось порядка 200мб при активном largeHeap.
0
|
|
| 31.08.2016, 12:47 | |
|
Ответы с готовыми решениями:
11
Работа с большими изображениями
Работа с большими данными |
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
| 31.08.2016, 12:54 | |
|
у этого чего-то очень большого наверное есть какой-то формат?
Добавлено через 52 секунды если это xml то по идее XMLPullParser-у без разницы какой объем входящих данных
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 31.08.2016, 12:56 [ТС] | |
|
Ну обычно json. Загрузить его не проблема, а вот распарсить, чтобы хранить структурировано, проблематично.
0
|
|
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||
| 31.08.2016, 13:16 | ||
|
2) Что парсим и чем? Если XML/JSON, то стандартными схемами (скорее всего) весь файл подгрузится в память, что для ОЧЕНЬ больших файлов не реально. В PHP были отдельные парсеры для гиганских XML файлов - может и в яве есть... 3) андроид МЕДЛЕННЫЙ! Может стоит распарсить "снаружи" (на сервере или на домашнем) и залить на телефон уже обработанное...
0
|
||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 31.08.2016, 13:16 | |
|
ExFau$t, добрый!
В своё время работал с файлами в несколько десятков мегабайт. http://stackoverflow.com/quest... -json-file - здесь рекомендуют Gson с потоками (stream) и Jackson. Парсинг большого объема JSON данных - здесь я колдовал с JsonReader и ручным разбором переменных.
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|||
| 31.08.2016, 13:38 [ТС] | |||
|
0
|
|||
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
| 31.08.2016, 14:09 | |
|
вообще, мне кажеттся, что любое нормальное api должно поддерживать постраничную выдачу результатов
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 31.08.2016, 16:31 [ТС] | |
|
CoolMind, спасибо, как вариант загрузка json во внутреннюю память, а потом чтение из него, меня устраивает. А вот JsonReader, наверное, не подойдёт, много исключений в ходе парсинга, какие-то поля есть, какие-то нет (например, корпус дома, строение и тп для адресов).
Добавлено через 2 часа 12 минут А не может получиться так, что память забивается не при парсинге, а при записи полученных данных, например, в SharedPreferences?
0
|
|
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 31.08.2016, 18:49 | |
|
ExFau$t, легко. OOM - штука такая, ей много не надо. В той теме я писал, что уже при скачивании всё роняется, ещё до распознавания. Поэтому использовал буферизацию. Кроме того, можно подумать насчёт вложенности объектов в JSON. Если там 10 уровней вложенности, а движок распознавателя - неоптимизированный, то, наверное, весь блок прочитает и свалится (предположение).
SharedPreferences имеет, если верить SO, предел в 2 GiB, а во внутренней памяти, наверное, нет такого объёма. Ну метров 100 - и обломись.
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 31.08.2016, 23:02 [ТС] | |
|
CoolMind, меня внутренняя память не очень беспокоит пока, а вот оп страдает...
0
|
|
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 01.09.2016, 00:36 | |
|
ExFau$t, вам надо проследить, как растёт память. Естественно, с отладчиком поработать. Также посмотреть во время запуска график памяти (ну и в лог в нужных местах выводить всякие заметки). Может быть, где-то утечки есть.
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 01.09.2016, 09:42 [ТС] | |
|
CoolMind, да кроме парсера нету больше ничего, да и потом это не си, чтобы память очищать. Происходит так, если закомментировать - порядок, если не парсить, а записать json.toString() - тоже норм, а вот начинаю брать конкретные поля разбирать и засовывать куда-нибудь в свои файлики, тут работает, потом виснет, потом вылет. Ничего лишнего в коне нету, получил getString - записал setString.
0
|
|
| 01.09.2016, 09:42 | |
|
Помогаю со студенческими работами здесь
12
Работа с большими данными Класс для работы с большими данными Коллекции для работы с большими данными Сводные с большими обьемами данными не обновляются через Workbook_Open()
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|