Форум программистов, компьютерный форум CyberForum.ru

Занятая память. Общие понятия - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Не отправляется UDP пакет http://www.cyberforum.ru/android-dev/thread1341460.html
в потоке устанавливаю соединение с сервером: @Override protected Void doInBackground(Void... params) { if (this.MA == null) return null; //java.util.concurrent.TimeUnit.SECONDS.sleep(10); byte message = new byte; try { host = java.net.InetAddress.getByName( "127.0.0.1" ) ; } catch (UnknownHostException e1) {
Android Google auot 2.0 Как авторизироватса в Google для работы с google docs Пишу программку для работы с google docs Выдает ошибку авторизации Я не писал аунтентификацию auot 2.0 так как не знаю нужно ли и как ее делать Ругается на SpreadsheetService service = new SpreadsheetService("MySpreadsheetIntegration-v1"); try { service.setUserCredentials(".....@gmail.com", "...."); Вся штука заключается в том что приложение под java работает на ура а вот на... http://www.cyberforum.ru/android-dev/thread1341312.html
Как реализовать добавление композиции в "Избранное"? Android
Всем привет! Такой вопрос ,у меня есть список ListView и в этом списке есть мелодии,как можно реализовать добавления композиции в список избранное?
Android Работа с сетью
Вот так идет запрос на сервер: try { HttpURLConnection.setFollowRedirects(true); URL url = new URL(URLs); URLConnection conn =url.openConnection();
Android Работа с webview http://www.cyberforum.ru/android-dev/thread1340923.html
Привет ребята! У меня следующая проблема. for (String key : map.keySet()) { textView.append("\n\t"+key + "\n"); for (final Map<String, String> m : map.get(key)) { for (int i = 0; i < 1; i++) { textView.append( m.get("timeStart") + "-" ...
Android Возможно ли передавать информацию о входящем звонке? Добрый день. Мне никогда ранее не приходилось писать на мобильных платформах, поэтому заранее извиняюсь, если вопрос глупый. Итак. Возможно ли написать такое приложение под андроид, которое при каждом входящем звонке асинхронно вызывало бы некий url? Идея такая: человеку, установившему приложение приходит входящий звонок с некоего номера +74951234567. Приложение асинхронно дергает урл типа... подробнее

Показать сообщение отдельно
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502

Занятая память. Общие понятия - Android

26.12.2014, 03:51. Просмотров 511. Ответов 1
Метки (Все метки)

Гуру! Вопрос к Вам!
Помогите систематизировать мои знания по памяти устройства!

В новой студии появилась панелька "Memory Monitor" и выдает "странные" графики.

Кто копал по памяти глубоко??? У меня там нечто вроде зигзагов рисуется... "Пила". Растет-растет-растет... С 9ти до 11 и снова парадает на 9. Это нормально? Или должна "в тихом режиме" стоять?

Что это за показатель??? По всему проекту? Включая сервисы?
Что означает "Initiate GS"?

Подключил к программе аларм и неубиваемый сервис (большая нагрузка). Каждые 3-4 часа мобилка начала перегружаться. Хочу поймать кто виноват. Проц вроде в разумных пределах. Прыгает до 25% на срабатывании таймера каждые 15 секунд... Заподозрил утечку памяти... Или/и слишком большое кво больших программ.

Хочу понять какая память вообще бывает! После Win немного запутался...

Что я понял:
1) Каждой программе выделяется память на запуск. По "школьным" терминам ОЗУ - сбрасывается при перезапуске. В моем случае около 11Мб. В пределах которой она работает. Время от времени подчищается сборщиком мусора.
2) Каждой программе выделяется некое пространство на системной флешке. ПЗУ. Это пространство на флешке не доступно другим программам (без рута). Вроде папка удаляется при удалении программы (не проверял). Создается эта папка с именем класса в \data\data\.
3) Обнаружил файл с именем класса программы в \data\local\tmp\
4) Обнаружил apk-файл с именем класса программы в \data\app\
5) Программа похоже где-то хранится и "первоначальном" виде - через тоталкоммандер часто ее можно "изьять". Удаление из 4) не помогает - программа все еще доступна для скачивания. Возможно из ядра, куда она "вкомпиливается".
6) Программа может пользоваться "внешним" носителем/флешкой. Тогда используется та флешка которую "докупили" отдельно - в отдельном "слоте", которую можно вынуть. Обычно НАМНОГО больше встроенной. Как-то данные программы можно перекидывать с внутренней флешки на внешнюю. Это делается в настройках программ. Что при этом реально происходит - не понял! Обьяснете, если можно...
7) Когда программа "устранавливается", она "вкомилируется" в ядро, засоряя некий вообще-недоступный раздел внутренней памяти. Вроде в новых версиях "вкомпиляция" будет еще круче/глубже для ускорения быстродействия (гугл где-то обещал). Но и сейчас (мне обьяснили) подменить файл встроенный в apk ресурсы на другой у уже установленой программы невозможно даже под рутом. Хотя когда учился работать с NDK обнаружил что в папку \data\data\класс иногда попадает библиотека встроенная в apk(возможно глюк отладки).
8) Обнаружил в папке mnt\sdcard два каталога sdcard и sdcard2. Один из них - явно моя внешняя флешка. Вторая? Похоже внутренняя? Но та что внутрення почти пустая!!! Файлов на ней на 4 байта... Или из тотала доступа не хватает чтобы остальное увидеть? Привык что в Win можно temp почистить... Здесь есть аналогии? Ведь есть куча платно/бесплатных программ, которые обещают "почистить" систему... Что они делают? Кроме принудительного отключения сервисов и удаления не важных программ?

Как устроены эти диски внутри - я совсем не понимаю! Сейчас свое устройство довел до состояния, что программу (игру) на 20-30Мб она не может установить - ей "не хватает места". Большая (внешняя) флешка почти пустая. Если удаляю часть программ, тяжелые программы снова ставятся. Не знаю куда смотреть что-бы следить за "занятостью" места для программ. Для себя провел аналогию с диском C: и D: под Windows. На C: ставятся программы ВСЕ, на D: хранятся фильмы, музыка и большие файлы, необходимые программам с диска C:. Не знаю как чистить этот "системный" диск. Кроме обнуления/перепрошивки всего устройства (="переустановить Windows"). В

Используя разные источники добился получения разных размерных "параметров памяти". Их слишком много и они разные! Обычно обозначались в источниках аббревиатурами. Но не удивлюсь, если они не полные или трогают заодно и системную флешку:
1) не знаю! выписываю МОИ данные:
pss = 22.89 Mb
Private=9.99 Mb
Shared=15.72 Mb
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
                            Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
                            Debug.getMemoryInfo(memoryInfo);
                            String memMessage = String.format("Memory (MB): Pss=%.2f, Private=%.2f, Shared=%.2f",
                                memoryInfo.getTotalPss() / 1024.0,
                                memoryInfo.getTotalPrivateDirty() / 1024.0,
                                memoryInfo.getTotalSharedDirty() / 1024.0);

2) не знаю! Подозреваю что связанно с дисками! выписываю МОИ данные:
Tot int: 820,87мб
Av int: 78,5Мб
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
                            File path = Environment.getDataDirectory();
                            StatFs stat = new StatFs(path.getPath());
                                blockSize = stat.getBlockSize();
                                availableBlocks = stat.getAvailableBlocks();
                                totalBlocks = stat.getBlockCount();
                            String memMessage3 = "";
                             //SizeToStr - число в мегабайты
                            memMessage3 += "Tot int: " + uni_Str.SizeToStr(totalBlocks * blockSize, 0) + " ";
                            memMessage3 += "Av int: " + uni_Str.SizeToStr(availableBlocks * blockSize, 0);

3) Тоже не знаю! В таймере не прыгают... Возможно описание ОЗУ устройства...
max: 64Mb
разреш: 48Мб
Кликните здесь для просмотра всего текста
Java
1
2
3
4
                            memMessage2 += "max: " + uni_Str.SizeToStr(Runtime.getRuntime().maxMemory(), 0) + " ";
                            // Возвращаем лимит памяти в мегабайтах
                            int memoryClass = ((ActivityManager) act1.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
                            memMessage2 += "разрешенная память: " + String.valueOf(memoryClass) + "Mb";

4) А вот эти цифры и рисует по моей программе график от андроид-студии! Те самые:
Mem 86%
used 10.80Mb
tot: 11.38Mb
free: 1.14Mb (цифры таймером прыгали пока набирал)
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
                            Runtime runtime = Runtime.getRuntime();
                            //runtime.gc(); // если разремарить - перестает прыгать в таймере (тоже не понимаю!)
                            String memMessage2 = "";
                            long memoryUsed = runtime.totalMemory() - runtime.freeMemory();
                            memMessage2 += "proc: " + runtime.availableProcessors();
                            int mem_proc = (int)(100 * memoryUsed / runtime.totalMemory());
                            memMessage2 += "Mem: " + mem_proc + "% ";
                            memMessage2 += "used: " + uni_Str.SizeToStr(memoryUsed, 0) + " ";
                            memMessage2 += "tot: " + uni_Str.SizeToStr(Runtime.getRuntime().totalMemory(), 0) + " ";
                            memMessage2 += "free: " + uni_Str.SizeToStr(Runtime.getRuntime().freeMemory(), 0)


ЛЮБАЯ критика приветствуется!!!

Кликните здесь для просмотра всего текста
ps. код выдерал из программ "с мясом" - возможно плохо почистил. И возможно не работает без каких нибудь разрешений...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru