30.08.2016, 17:37
|
Новичок на форуме
|
|
Регистрация: 14.02.2012
Сообщений: 5
|
|
Память javascript
Возник странный вопрос.
Например есть у меня проект с использованием require.js, и я в этом проекте постоянно подгружаю по запросам новый javascript, и новые шаблоны. Они сохраняются куда то в память, что будет , когда я подгружу слишком много шаблонов/javascriptов? Есть какой-то лимит же?
|
|
30.08.2016, 19:14
|
Аспирант
|
|
Регистрация: 21.08.2016
Сообщений: 77
|
|
все зависит от того, какой код. Чтобы GC нормально освобождал память, надо следить, чтобы не было ненужных ссылок на объекты. Если на объект несколько ссылок он не удалится. Особенно опасны в этом смысле замыкания
o = {}
foo = function(o){ return function(){}}(o)
delete o // пока существует foo, о висит в памяти
Больше используй делегирование, не используй миксины и замыкания бездумно, следи чтобы ненужные ссылки всегда удалялись, в этом ключе, короче.
А четкого лимита никакого нет, кроме системного, все зависит от конкретной машины. Просто будет все тормозить, и зависать, если не упадет
Последний раз редактировалось scrollquest, 30.08.2016 в 21:14.
|
|
31.08.2016, 06:00
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Сообщение от te1
|
что будет , когда я подгружу слишком много шаблонов
|
Увеличится размер швопа. И так пока винт не кончится. А они сейчас большие.
|
|
31.08.2016, 18:01
|
Новичок на форуме
|
|
Регистрация: 14.02.2012
Сообщений: 5
|
|
Сообщение от scrollquest
|
все зависит от того, какой код. Чтобы GC нормально освобождал память, надо следить, чтобы не было ненужных ссылок на объекты. Если на объект несколько ссылок он не удалится. Особенно опасны в этом смысле замыкания
o = {}
foo = function(o){ return function(){}}(o)
delete o // пока существует foo, о висит в памяти
Больше используй делегирование, не используй миксины и замыкания бездумно, следи чтобы ненужные ссылки всегда удалялись, в этом ключе, короче.
А четкого лимита никакого нет, кроме системного, все зависит от конкретной машины. Просто будет все тормозить, и зависать, если не упадет
|
Это все понятно.
Я имел несколько другое ввиду.
Вот нашел что-то похожее на мой вопрос,
http://stackoverflow.com/questions/3...ed-to-conserve
|
|
31.08.2016, 18:02
|
Новичок на форуме
|
|
Регистрация: 14.02.2012
Сообщений: 5
|
|
Сообщение от warren buffet
|
Увеличится размер швопа. И так пока винт не кончится. А они сейчас большие.
|
Благодарю. Я так понял что в принципе можно не беспокоиться об очистке шаблонов, js , (например в том же require.js, любом другом amd). Если их количество "адекватное". Имеется ввиду Rich Client Application.
Последний раз редактировалось te1, 31.08.2016 в 18:11.
|
|
01.09.2016, 06:41
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Тебя не мемори должна волновать, а сама жаба скрипучая. Браузер может зохавать таблицу с картинками на несколько тыщ строк и даже десятков тыщ и тащемта будет крутиться, а вот жирные и тупые скрипты даже при небольшом их числе, запросто умудряются завесить к чертям что угодно.
|
|
01.09.2016, 10:52
|
Новичок на форуме
|
|
Регистрация: 14.02.2012
Сообщений: 5
|
|
Сообщение от warren buffet
|
Тебя не мемори должна волновать, а сама жаба скрипучая. Браузер может зохавать таблицу с картинками на несколько тыщ строк и даже десятков тыщ и тащемта будет крутиться, а вот жирные и тупые скрипты даже при небольшом их числе, запросто умудряются завесить к чертям что угодно.
|
не первый день на javascript пишу , с этим как-нибудь разребусь, как и с утечками памяти (замыкания, неправильное использование jquery, утечки в js фреймворках, всё это знакомо)
Интересн как раз стал вариант, когда я пишу на фреймворке (в конкретном случае - knockout.js + использую компоненты и require.js для их подгрузки, компоненты - это пары из шаблона + соответствующий шаблону js код).
И процесс работы скрипта такой, что постоянно по требованию подгружаются эти компоненты, соответственно и возник вопрос, что будет, если приложение станет очень большим, я же постоянно буду ,пускай и не сразу, но постепенно подгружать компоненты.
Последний раз редактировалось te1, 01.09.2016 в 11:00.
|
|
01.09.2016, 13:14
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
te1,
require.js вставляет скрипты динамически, при этом скрипты сохраняются на клиенте
при последующем запросе скрипт берется уже с кеша клиента, не дергая ваш сервер
|
|
01.09.2016, 13:28
|
Аспирант
|
|
Регистрация: 21.08.2016
Сообщений: 77
|
|
Poznakomlus,
А какое это имеет отношение к вопросу?
|
|
01.09.2016, 13:41
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от te1
|
Например есть у меня проект с использованием require.js, и я в этом проекте постоянно подгружаю по запросам новый javascript, и новые шаблоны. Они сохраняются куда то в память
|
Сообщение от Poznakomlus
|
при этом скрипты сохраняются на клиенте
|
Сообщение от scrollquest
|
А какое это имеет отношение к вопросу?
|
Читайте внимательнее
|
|
|
|