JavaScript → Простой, казалось бы, вопрос по JavaScript
Есть простейший с виду код:
Если оставить этот код работающим в, например, Google Chorme, скажем, на 1 час, он съедает память. Съедает методично. Если посмотреть в Developer Tools на профиль использования памяти видно что память таки чистится GC но не до конца. Со временем минимальная точка на графике после GC растет.

Аналогично рост потребления памяти видно и по about:memory. «Отжир» памяти стабильно видно и в FF…
Важное...
Кроме этого кода более на данной странице никакого кода нет вообще.
Возможно я не понимаю как работает GC в JS, но по моему понятию тут нечему течь и нечему жить вечно. Может кто-то объяснить почему?
P.S. «Настоящей» утечки таки нет, если обновить страницу — память очищается.
P.P.S. Есть локальная жизненна потребность («требования бизнеса») оставлять подобный по структуре код на гораздо большие промежутки чем 1 час.
UPD: Оказывается есть даже тикет в хромиуме: code.google.com/p/chromium/issues/detail?id=52411
UPD: Якобы fixed in 9, но я проверяю на 10.
setInterval(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'json.txt', true);
xhr.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
};
xhr.send('');
}, 500);
Если оставить этот код работающим в, например, Google Chorme, скажем, на 1 час, он съедает память. Съедает методично. Если посмотреть в Developer Tools на профиль использования памяти видно что память таки чистится GC но не до конца. Со временем минимальная точка на графике после GC растет.

Аналогично рост потребления памяти видно и по about:memory. «Отжир» памяти стабильно видно и в FF…
Важное...
- Файл json.txt лежит на localhost, его загрузка не занимает более 500мс гарантированно (я проверял).
- Вывод в консоль я тоже отключал — память по прежнему отжирается.
- EDIT без включенных developer tools — тоже течет, видно на about:memory.
Кроме этого кода более на данной странице никакого кода нет вообще.
Возможно я не понимаю как работает GC в JS, но по моему понятию тут нечему течь и нечему жить вечно. Может кто-то объяснить почему?
P.S. «Настоящей» утечки таки нет, если обновить страницу — память очищается.
P.P.S. Есть локальная жизненна потребность («требования бизнеса») оставлять подобный по структуре код на гораздо большие промежутки чем 1 час.
UPD: Оказывается есть даже тикет в хромиуме: code.google.com/p/chromium/issues/detail?id=52411
UPD: Якобы fixed in 9, но я проверяю на 10.
JAVA → Garbage Collection наглядно
В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
JavaScript → Вынеси мусор!
Речь пойдёт о сборке мусора и утечках памяти в разных браузерах.

В общем и целом эта тема уже много обсуждалась, я хочу рассмотреть один интересный случай c замыканиями.

В общем и целом эта тема уже много обсуждалась, я хочу рассмотреть один интересный случай c замыканиями.
.NET → .NET Framework. Memory management.
В данной статье рассматриваются некоторые моменты по работе с памятью в .NET Framework. Статья описывает работу GC, как GC контролирует свои хип, режимы работы GC. Приведены примеры, по использованию памяти в обход GC. Я изложил не только легко доступную информацию, ну и ту, что доступна только при изучении дампов приложений, написанных на .NET. Надеюсь статья получилась информативной и не очень скучной. Следующая статья будет про загрузчик, JIT, и его структур данных, таких как Method Tables, Method Descriptors и EEClass.
Персональные блоги → PHP: первое знакомство с garbage collection
Столкнулся я недавно с небольшой проблемой: данные из сессии рандомно пропадали при простое сессии больше 24 (как выяснилось позже) минут.
Вот, что рассказал мне мануал:
Это объясняет «рандомность» удаляемых данных.
Но как решить эту проблему, поскольку в моем проекте время простоя запросто может быть больше 24 минут.
Вот, что рассказал мне мануал:
Просроченные сессии на самом деле не подвергаются уничтожению сразу же по истечении 24 минут. Вот как все происходит: в начале каждого запроса, использующего сессию (вследствие предварительного вызова функции session_start( ) или установки session/auto_start в on), существует 1% возможности того, что PHP-интерпретатор отсканирует все сессии на сервере и удалит любую из просроченных. «1% возможности» в отношении компьютерной программы звучит совершенно непредсказуемо. Так оно и есть. Но подобная непредсказуемость повышает общую производительность. Интенсивно работающий сайт, занятый в начале исполнения каждого запроса поиском просроченных сессий в целях их удаления, станет расходовать слишком много ресурсов сервера.
Это объясняет «рандомность» удаляемых данных.
Но как решить эту проблему, поскольку в моем проекте время простоя запросто может быть больше 24 минут.