Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Память javascript (https://javascript.ru/forum/misc/64702-pamyat-javascript.html)

te1 30.08.2016 17:37

Память javascript
 
Возник странный вопрос.

Например есть у меня проект с использованием require.js, и я в этом проекте постоянно подгружаю по запросам новый javascript, и новые шаблоны. Они сохраняются куда то в память, что будет , когда я подгружу слишком много шаблонов/javascriptов? Есть какой-то лимит же?

scrollquest 30.08.2016 19:14

все зависит от того, какой код. Чтобы GC нормально освобождал память, надо следить, чтобы не было ненужных ссылок на объекты. Если на объект несколько ссылок он не удалится. Особенно опасны в этом смысле замыкания
o = {}
foo = function(o){ return function(){}}(o)
delete o // пока существует foo, о висит в памяти


Больше используй делегирование, не используй миксины и замыкания бездумно, следи чтобы ненужные ссылки всегда удалялись, в этом ключе, короче.

А четкого лимита никакого нет, кроме системного, все зависит от конкретной машины. Просто будет все тормозить, и зависать, если не упадет

warren buffet 31.08.2016 06:00

Цитата:

Сообщение от te1
что будет , когда я подгружу слишком много шаблонов

Увеличится размер швопа. И так пока винт не кончится. А они сейчас большие.

te1 31.08.2016 18:01

Цитата:

Сообщение от scrollquest (Сообщение 427134)
все зависит от того, какой код. Чтобы GC нормально освобождал память, надо следить, чтобы не было ненужных ссылок на объекты. Если на объект несколько ссылок он не удалится. Особенно опасны в этом смысле замыкания
o = {}
foo = function(o){ return function(){}}(o)
delete o // пока существует foo, о висит в памяти


Больше используй делегирование, не используй миксины и замыкания бездумно, следи чтобы ненужные ссылки всегда удалялись, в этом ключе, короче.

А четкого лимита никакого нет, кроме системного, все зависит от конкретной машины. Просто будет все тормозить, и зависать, если не упадет


Это все понятно.
Я имел несколько другое ввиду.
Вот нашел что-то похожее на мой вопрос,
http://stackoverflow.com/questions/3...ed-to-conserve

te1 31.08.2016 18:02

Цитата:

Сообщение от warren buffet (Сообщение 427167)
Увеличится размер швопа. И так пока винт не кончится. А они сейчас большие.

Благодарю. Я так понял что в принципе можно не беспокоиться об очистке шаблонов, js , (например в том же require.js, любом другом amd). Если их количество "адекватное". Имеется ввиду Rich Client Application.

warren buffet 01.09.2016 06:41

Тебя не мемори должна волновать, а сама жаба скрипучая. Браузер может зохавать таблицу с картинками на несколько тыщ строк и даже десятков тыщ и тащемта будет крутиться, а вот жирные и тупые скрипты даже при небольшом их числе, запросто умудряются завесить к чертям что угодно.

te1 01.09.2016 10:52

Цитата:

Сообщение от warren buffet (Сообщение 427330)
Тебя не мемори должна волновать, а сама жаба скрипучая. Браузер может зохавать таблицу с картинками на несколько тыщ строк и даже десятков тыщ и тащемта будет крутиться, а вот жирные и тупые скрипты даже при небольшом их числе, запросто умудряются завесить к чертям что угодно.

не первый день на javascript пишу :), с этим как-нибудь разребусь, как и с утечками памяти (замыкания, неправильное использование jquery, утечки в js фреймворках, всё это знакомо)

Интересн как раз стал вариант, когда я пишу на фреймворке (в конкретном случае - knockout.js + использую компоненты и require.js для их подгрузки, компоненты - это пары из шаблона + соответствующий шаблону js код).
И процесс работы скрипта такой, что постоянно по требованию подгружаются эти компоненты, соответственно и возник вопрос, что будет, если приложение станет очень большим, я же постоянно буду ,пускай и не сразу, но постепенно подгружать компоненты.

Vlasenko Fedor 01.09.2016 13:14

te1,
require.js вставляет скрипты динамически, при этом скрипты сохраняются на клиенте
при последующем запросе скрипт берется уже с кеша клиента, не дергая ваш сервер

scrollquest 01.09.2016 13:28

Poznakomlus,
А какое это имеет отношение к вопросу?

Vlasenko Fedor 01.09.2016 13:41

Цитата:

Сообщение от te1
Например есть у меня проект с использованием require.js, и я в этом проекте постоянно подгружаю по запросам новый javascript, и новые шаблоны. Они сохраняются куда то в память

Цитата:

Сообщение от Poznakomlus
при этом скрипты сохраняются на клиенте

Цитата:

Сообщение от scrollquest
А какое это имеет отношение к вопросу?

Читайте внимательнее


Часовой пояс GMT +3, время: 05:31.