Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать полный размер RMS-памяти? 
:(
    Опции темы
Green_DiCk
Дата 8.10.2009, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.11.2006

Репутация: нет
Всего: нет




Сабж. Нужно выяснить объём всей памяти телефона, которая может быть использована для RMS-хранилища.

Немного поясню суть задачи. Хочу, чтобы мой мидлет определял сколько всего RMS-памяти доступно в телефоне (для всех мидлетов) и брал под свои нужды скажем 20 %.

Функция RecordStore.getSizeAvailable() возвращает свободное место в _конкретном_ RMS-хранилище, созданном ф-цией RecordStore.openRecordStore("MyStore", ...). 
Но это как вы понимаете не то, т.к. можно с тем же успехом создать ещё одно хранилище... И где "потолок" не ясно. Чтобы его определить можно запустить цикл, создающий новые RMS-хранилища до тех пор, пока не вылетит RecordStoreFullException. 
Однако всё равно не ясно - будет ли полученный таким образом размер памяти означать память, доступную для моего мидлета или всю память телефона.
PM MAIL   Вверх
ivanovpv
Дата 8.10.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 10
Всего: 28



Green_DiCk, 

Спецификация MIDP определяет минимальное количество RMS - по-моему их то ли 16 то ли 8 (посмотри на спецификацию). Я создавал для интереса до 1000 RMS'ов на Nokia S60 - проблем не было.

Функция getSizeAvailable() - возвращает пространство свободное для одного RecordStore и должна использоваться перед добавлением записи в таблицу. Как правило для пустого RMS это что-то порядка 100 кб. - в любом случае это зависит от реализации (читай модели телефона). Спецификация не определяет максимальный размер - установлен минимальный размер - не менее 8 кб.

А по последнему вопросу - нет, размер выделяемый для RMS и память телефона вещи разные (хотя и связанные). Гарантий, что взяв под RMS всю память даваемую MIDP будет утилизирована вся память телефона - никаких. В Нокиевском эмуляторе по-моему даже вручную можно выделить размер памяти отводимую под RMS.


Это сообщение отредактировал(а) ivanovpv - 8.10.2009, 13:28


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Green_DiCk
Дата 8.10.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 1.11.2006

Репутация: нет
Всего: нет



ivanovpv,  спасибо за разъяснения.

а всё-таки вопросы по поводу организации RMS-хранилища остались. они уже скорее риторические, но тем не менее. рассмотрим например реализацию, где каждый мидлет может создавать 20 RMS-хранилищ с объёмом 200 кб. Что будет, если юзер установит на мобилу X мидлетов, каждый из которых будет занимать всю доступную ему RMS память? Если X велико, то RMS-памяти явно на всех не хватит. Тогда получится так, что  несколько мидлетов (например Y) захавают всю память, создав по 20 хранилищ, Y+1 мидлету достанется уже не 20, а меньше хранилищ, а Y+2й и остальные мидлеты вообще ничего не получат. 

Несправедливо получается. Или размер хранилищ не фиксирован?

PM MAIL   Вверх
ivanovpv
Дата 9.10.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 10
Всего: 28



Цитата(Green_DiCk @  8.10.2009,  20:09 Найти цитируемый пост)
Несправедливо получается. Или размер хранилищ не фиксирован?

1) По-моему абсолютно нормальная ситуация. А чем она принципиально отличается то того, что юзер (мидлет) забил общий диск (читай память телефона) своими данными, так что следующему юзеру (мидлету) не хватает дискового пространства (памяти телефона)?
2) Если быть совсем точным то RMS выделяется не на Midlet, а на Midlet Suite - ну и к тому же RMS'ы можно делать разделяемыми между различными Midlet Suite - посему одно приложение может использовать (если разрешено) данные RMS другого приложения
3) Вообще все сильно зависит от реализации. Например, стандартный Sun Wireless Client который рекомендован Sun для портирования на мобильные устройства (по-моему его реализуют смартфоны HP iPaq) - минимальный размер RMS 64 кб, максимальный (на все мидлет сьюты) = 1 мб., а максимальный размер на 1 мидлет сьют всего 200 кб. А для Nokia S60 максимальный размер на 1 мидлет сьют 8 мб., для S40 - что-то чуть больше 100 кб. в общем смотрите документацию - все это изложено на сайтах производителей телефонов.




--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.