|
Основной форум Сюда все проблемы связанные с программированием. |
10.11.2008, 18:31
|
#1
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
вопрос на засыпку =)
кодеры подскажыте что лучше будет для программы:
1) загружать изображения из ресурса в переменные а потом работать с ними?
или
2) напрямую загружать картинки из ресурса каждый раз(drawImage(loadImage('/бла_бла_бла.png'), 0, 0))?
я думаю шо если загружать в переменные то соответственно память будет выделятсо и будет лагать, но я не шарю потому мне кажетсо шо второй вариант лучше
|
(Offline)
|
|
10.11.2008, 18:38
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: вопрос на засыпку =)
скорость/расход памяти(что в последствии может повлиять и на скорость)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
10.11.2008, 19:46
|
#3
|
ПроЭктировщик
Регистрация: 25.12.2006
Сообщений: 163
Написано 7 полезных сообщений (для 12 пользователей)
|
Ответ: вопрос на засыпку =)
имхо, первый вариант более быстродействующий.
при втором варианте как раз наоборот, будет выделяться и освобождаться память неизвестно как (в какие-то внутренние переменные Java-кода), так что если одна и та же картинка рисуется неоднократно - загрузить ее внчале в переменную и затем по мере надобности использовать.
|
(Offline)
|
|
11.11.2008, 01:38
|
#4
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: вопрос на засыпку =)
но ето будет жрать память...? у меня итак масив будет один розмером 320х240 =)
|
(Offline)
|
|
11.11.2008, 02:04
|
#5
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: вопрос на засыпку =)
Смотря сколько изображений, как часто они отрисовываются, сколько раз используется одно изображение и сколько оперативки у телефона.
|
(Offline)
|
|
11.11.2008, 02:07
|
#6
|
Нуждающийся
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений (для 19 пользователей)
|
Ответ: вопрос на засыпку =)
Я считаю так, что если картинку нужно использовать всего один раз, то пойдет и второй вариант, иначе - первый...
|
(Offline)
|
|
11.11.2008, 04:00
|
#7
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: вопрос на засыпку =)
а освобождать както ети переменные с картинками можнО? шоб они память не жрали=)
типа присвоить nill =)
|
(Offline)
|
|
11.11.2008, 08:25
|
#8
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: вопрос на засыпку =)
Сообщение от beZ_probleM
а освобождать както ети переменные с картинками можнО? шоб они память не жрали=)
типа присвоить nill =)
|
Да. Можно. Есть библиотека Lib_memclean и в ней единственная функция clean, которая и делает очистку памяти от неиспользуемых ресурсов.
|
(Offline)
|
|
11.11.2008, 16:37
|
#9
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: вопрос на засыпку =)
тоесть? а как она узнает шо я тот ресурс не буду использовать больше? оО
|
(Offline)
|
|
11.11.2008, 19:35
|
#10
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: вопрос на засыпку =)
Сообщение от beZ_probleM
тоесть? а как она узнает шо я тот ресурс не буду использовать больше? оО
|
Я в теме приводил пример использования. Суть в том, что объявляется дополнительный объект image, который не загружается. Далее для удаления изображения из памяти достаточно присвоить ему этот пустой объект и вызвать функцию очистки.
|
(Offline)
|
|
14.11.2008, 03:18
|
#11
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: вопрос на засыпку =)
Сообщение от beZ_probleM
тоесть? а как она узнает шо я тот ресурс не буду использовать больше? оО
|
Да очень просто. На самом деле в переменной типа картинка хранится не сама картинка, а адрес в оперативке, по которому она находится. При загрузке новой картинки, мобила выделяет нужное место в оперативке, переписывает туда картинку, а адрес первого байта этой картинки записывает в переменную. Вся фишка в том, что старая картинка при этом так и остаётся в оперативке, хотя ни одна переменная на эту область не ссылается. Старая картинка получается тупо засоряет оперативную память. Когда же оперативки становится мало, телефон запускает процесс под названием Garbage Collector (Сборщик Мусора). Он просто сверяет занятые участки в оперативке и текущие переменные и если обнаруживает, что на какой-то ресурс (например, картинку) в памяти не ссылается ни одна переменная, то этот ресурс считается мусором и подлежит удалению. Библиотека Lib_memclean просто вызывает Сборщика Мусора досрочно, не дожидаясь когда же оперативки будет мало.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.11.2008, 23:35
|
#12
|
ПроЭктировщик
Регистрация: 25.12.2006
Сообщений: 163
Написано 7 полезных сообщений (для 12 пользователей)
|
Ответ: вопрос на засыпку =)
Сообщение от odd
Библиотека Lib_memclean просто вызывает Сборщика Мусора досрочно, не дожидаясь когда же оперативки будет мало.
|
судя по тому, как реализован сборщик мусора в Java, нет никакой гарантии, что уборка начнется сразу после вызова этой функции (поправьте, если не прав). Вызов уборщика - это именно "вызов", как звонок в скорую а уж когда она приедет - это еще вопрос... я хочу сказать, что система, получив указание почистить память, вполне может еще подумать и приступить к уборке тогда, когда ей покажется это наиболее удобным.
|
(Offline)
|
|
17.11.2008, 00:55
|
#13
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: вопрос на засыпку =)
Сообщение от ARV
судя по тому, как реализован сборщик мусора в Java, нет никакой гарантии, что уборка начнется сразу после вызова этой функции (поправьте, если не прав). Вызов уборщика - это именно "вызов", как звонок в скорую а уж когда она приедет - это еще вопрос... я хочу сказать, что система, получив указание почистить память, вполне может еще подумать и приступить к уборке тогда, когда ей покажется это наиболее удобным.
|
Нет, очистка происходит именно при вызове функции(во всяком случае, так должно быть на нормальных телах).
|
(Offline)
|
|
17.11.2008, 04:10
|
#14
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: вопрос на засыпку =)
ViNT, а я тоже много где слышал, что при вызове сборщика мусора он не обязательно сразу вызовется. Там типа такой же прикол, как, например, с обработкой клавиш бывает. Клавишу в некоторых играх нажимаешь, а отклик запаздывает или вообще не всегда происходит. Это типа если несколько плотных потоков работает, то для спящих потоков не хватает квантов времени процессора для того, чтобы проснуться и начать работать.
|
(Offline)
|
|
17.11.2008, 21:08
|
#15
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: вопрос на засыпку =)
Сообщение от Phantom_wc
ViNT, а я тоже много где слышал, что при вызове сборщика мусора он не обязательно сразу вызовется. Там типа такой же прикол, как, например, с обработкой клавиш бывает. Клавишу в некоторых играх нажимаешь, а отклик запаздывает или вообще не всегда происходит. Это типа если несколько плотных потоков работает, то для спящих потоков не хватает квантов времени процессора для того, чтобы проснуться и начать работать.
|
Ну это уже другой вопрос. Сборщик мусора, скорее всего, действительно работает в фоновом режиме, тогда нужно вызывать его когда процессор не загружен, т.е. не выполняются сложные вычисления.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Вопрос |
Черный крыс |
BlitzMax |
1 |
31.03.2009 09:30 |
Вопрос |
Akima |
Наш форум |
5 |
31.12.2006 18:09 |
еще вопрос |
SubZer0 |
Программирование |
2 |
12.07.2006 21:47 |
Вопрос на засыпку |
SubZer0 |
Болтовня |
12 |
15.03.2006 19:26 |
Часовой пояс GMT +4, время: 19:16.
|