function someTest() {
// ...
// Здесь в конструкторе ObjectStorage создался таймер -->
var storage = new ObjectStorage("someStorage");
// ...
// Функция закончила своё действие, ссылка на storage
// потеряна, а таймер живёт, да и сборщик мусора объект
// не убьет
}
function someTest2() {
// ...
// То же самое, что и в someTest
var storage = new ObjectStorage("someStorage");
// ...
}
someTest();
someTest2();
В итоге после вызова someTest и someTest2 будут крутится два потерянных таймера. И так каждый раз при создании экземпляра ObjectStorage.
На самом деле, между C# и PHP не такая уж и разница в плане изучения. Это как с иностранными языками: знаете английский, изучать, например, немецкий или голландский будет куда легче. А вот, к примеру, Lisp или Haskell — будет изучать всё так же сложно (это как японский :)) — там парадигма другая, и требует другой модели мышления.
Я тоже ВМ-ку оканчивал. Главное что мне дало образование — умение шевелить мозгами. Все навыки приобрёл (и приобретаю) чтением манулов, доков, блогов и большим количеством практики. Я думаю, что профессионалом делает не спецобразование (хотя оно, бесспорно, очень помогает), а именно желание изучать, разбираться и применять на практике.
Исправленная паста: pastebin.com/Rye1T0Jr
Набросал код на скорую руку:
pastebin.com/yAkqVK5Q
В итоге после вызова someTest и someTest2 будут крутится два потерянных таймера. И так каждый раз при создании экземпляра ObjectStorage.