Pull to refresh
  • by relevance
  • by date
  • by rating

XmlSerializer — Assembly Leak без спроса :)

Lumber room

Коротко о главном


В некоторых частях .NET Framework, таких как XmlSerializer, используется внутреннее динамическое создание кода.XmlSerializer создает временные файлы C#, компилирует результирующие файлы во временную сборку и затем загружает эту сборку в процесс. Такое создание кода тоже стоит сравнительно дорого, поэтому XmlSerializer размещает временные сборки в кэш, по одной на каждый тип. Это значит, что в следующий раз при создании кода XmlSerializer для класса Х не будет создаваться новая сборка, а будет использована сборка из кэша. Однако, не все так просто.
В некоторых случаях происходят утечки сборок...
Total votes 7: ↑4 and ↓3 +1
Views 256
Comments 1

XmlSerializer — Assembly Leak без спроса :)

.NET *

Коротко о главном


В некоторых частях .NET Framework, таких как XmlSerializer, используется внутреннее динамическое создание кода.XmlSerializer создает временные файлы C#, компилирует результирующие файлы во временную сборку и затем загружает эту сборку в процесс. Такое создание кода тоже стоит сравнительно дорого, поэтому XmlSerializer размещает временные сборки в кэш, по одной на каждый тип. Это значит, что в следующий раз при создании кода XmlSerializer для класса Х не будет создаваться новая сборка, а будет использована сборка из кэша. Однако, не все так просто.
В некоторых случаях происходят утечки сборок...
Total votes 31: ↑29 and ↓2 +27
Views 5.1K
Comments 5

Тормоза в Snow Leopard

IT-companies
Если вы обновились до Snow Leopard и компьютер начал ужасно (ужасно!) тормозить, то похоже я знаю, в чём ваша (и когда-то моя) проблема.
А проблема в coreaudiod. Coreaudiod — это API, отвечающий за звук в OSX. Случается, что coreaudiod начинает занимать весь свободный RAM. В моём случае, из 4Гб оперативки свободными оставались 8-10Мб сразу после загрузки системы. Выход прост — удалить plist по адресу: System/Library/LaunchDaemons/com.apple.audio.coreaudiod.plist, перезагрузиться и voila — всё прекрасно работает :).
Странно, что этот глюк в 10.6.1 не решили.

UPD. Давайте не будем разводить холивар на пустом месте. Это просто частный случай, я подумал, что кому-то может помочь найденное мной решение. Эту ситуацию не так просто воссоздать и наверное не совсем корректно на её основе строить заключения о каких бы то ни было недостатках OS X.
Total votes 62: ↑37 and ↓25 +12
Views 1K
Comments 80

Слабые события в C#

.NET *
Translation

От переводчика


Недавно в проекте, где я работаю, мы столкнулись с проблемой утечки памяти. Прочитав множество статей — от рассказов по управлению памятью в .NET до практических рекомендаций по правильному освобождению ресурсов, я в том числе наткнулся на статью, в которой рассказывается, как корректно использовать события. Ее перевод я и хочу вам представить.
Это топик из песочницы, с которым я попал сюда на Хабр.

Читать дальше →
Total votes 92: ↑75 and ↓17 +58
Views 73K
Comments 18

Осторожней с ChildWindow в Silverlight SDK. MemoryLeak detected

Lumber room
В процессе поиска своих утечек памяти в приложении написанном на Silverlight (последняя запись в моём личном блоге) обнаружил в классе ChildWindow ошибку, приводящюю к утечке памяти.
Читать дальше →
Total votes 19: ↑11 and ↓8 +3
Views 185
Comments 3

Утечки памяти в программах на С/С++ — история нескольких багов

C++ *
Sandbox
Истории нескольких проблем, связанных с утечками памяти. Большинство таких проблем являются достаточно тривиальными, легко воспроизводятся, легко обнаруживаются соответствуюшим инструментарием, и исправляются. Но, временами, проблемы оказываются необычными, и требуют необычного подхода или решения…
Читать дальше →
Total votes 67: ↑64 and ↓3 +61
Views 9.1K
Comments 40

Утечки памяти в замыканиях JavaScript

JavaScript *
Translation
Цитата из Google JavaScript style guide:

Возможность создавать замыкания — похоже, самая полезная и часто остающаяся без внимания особенность JS.

Однако, одну вещь нужно иметь виду: замыкание хранит указатель на замыкаемый им контекст. В результате, прикрепление замыкания к элементу DOM может породить циклическую зависимость и, следовательно, утечку памяти. Например, в следующем куске кода:

function foo(element, a, b) {
  element.onclick = function() { /* использует a и b */ };
}


замыкание хранит указатель на element, a и b даже в том случае, если оно никогда element не использует. А раз element тоже хранит указатель на замыкание, то получается цикл, который никогда не будет вычищен сборщиком мусора.
Читать дальше →
Total votes 68: ↑40 and ↓28 +12
Views 11K
Comments 31

Коктейли ко дню программиста

DIY
Здравствуй, Хабр!

Осталось несколько дней до дня программиста и, конечно, в эту 13-ю пятницу, многие из пользователей хабра буду отмечать этот праздник. Буду отмечать и я.

По случаю профессионального праздника, мне бы хотелось поделиться с хабравчанами рассказом о своём небольшом кулинарном проекте, который удалось реализовать буквально накануне. Думаю из названия поста уже стало понятно, что это — коктейли для программиста. Кажется, до этого момента IT и миксологию еще никто не пытался объединить, а потому у меня есть некоторая надежда на успех моего начинания.

Все началось вот с чего: моя супруга увлекается кулинарией и ведет небольшой кулинарный блог. В прошлом году на мой день рождения она пригласила к нам в гости на кухню настоящего бармена из барного startup-проекта БАРаДОМа.нет. С момента знакомства с Артёмом (барменом который превратил мой день рождения в домашнюю барную вечеринку), у меня появилась идея: найти рецепты (или придумать самим) коктейлей, которые бы вписались в IT-тематику.

Итогом нескольких дней активной переписки с Артёмом стала вот такая небольшая коктейльная карта:

  • Ruby
  • Python
  • Суровый Perl
  • JMP (aka Assembler)
  • Profit!
  • Epic fail
  • Memory leak


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

Чин-чин!
Total votes 240: ↑217 and ↓23 +194
Views 93K
Comments 109

Хочу таймер и счётчик загруженных строк на Web-форме

JavaScript *jQuery *.NET *ASP *C# *
… отчет формировался долго. Песочные часы и синяя полоска клонили в сон. Вначале он хотел обезьянку, которая лезет по лестнице, потом градусник, но в итоге остался таймер и счетчик. Глупая улыбка и добрый, сочувствующий, взгляд делают чудеса.

В процессе разработки форм для отчетности, пользователь захотел видеть процесс загрузки данных из базы. Он хотел, чтобы после нажатия кнопки включался секундомер, а по мере получения строк, их количество отображалось на форме.Реализовать это надо было в рамках существующего проекта на ASP.NET.
Подробности
Total votes 15: ↑11 and ↓4 +7
Views 9.3K
Comments 13

Unsafe в Swift

Development for iOS *Swift *
Создатели современных языков программирования всеми силами пытаются увести программистов от прямой работы с указателями и памятью, либо вообще не включая в язык подобные возможности (например, Java) либо маркируя их страшными словами unsafe (C#). Пишущим на swift повезло, этот язык попал во вторую категорию, и хотя это не рекомендуется, а в документации встречаются предупреждения о возможных утечках памяти и прочих страшилках возможность такая есть!

В этой статья я хотел бы рассмотреть работу с указателями в swift, а так же порассуждать для чего это вообще может понадобиться.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 12K
Comments 15

Как выгрузить dll из Java-машины

Java *
Recovery mode
Java взаимодействует с операционной системой через методы, помеченные ключевым словом native, при помощи системных библиотек, загружаемых процедурой System.loadLibrary().

Загрузить системную библиотеку очень просто, а вот чтобы ее выгрузить, как оказалось, нужно приложить немало усилий. Как именно выгружаются системные библиотеки, и зачем это нужно я постараюсь рассказать.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 7.7K
Comments 21

Про утечку памяти в одном серверном приложении

High performance *Programming *C++ **nix *Debugging *


Прочитав данную заметку вы узнаете, через что пришлось пройти после неожиданно возникшей утечки памяти серверного приложения в ОС FreeBSD. Какие современные средства обнаружения подобных проблем существуют в данной среде и почему самое мощное из них может оказаться совершенно бесполезным в кривых руках.
Читать дальше →
Total votes 43: ↑40 and ↓3 +37
Views 16K
Comments 139

Подробно о dynamic: подковерные игры компилятора, утечка памяти, нюансы производительности

Programming *.NET *C# *

Прелюдия



Рассмотрим следующий код:

//Any native COM object
var comType = Type.GetTypeFromCLSID(new Guid("E13B6688-3F39-11D0-96F6-00A0C9191601"));

while (true)
{
    dynamic com = Activator.CreateInstance(comType);

    //do some work

    Marshal.FinalReleaseComObject(com);
}


Сигнатура метода Marshal.FinalReleaseComObject выглядит следующим образом:

public static int FinalReleaseComObject(Object o)


Создаем простой COM-объект, выполняем какую-то работу и тут же его освобождаем. Казалось бы, что может пойти не так? Да, создание объекта внутри бесконечного цикла — не очень хорошая практика, но GC возьмет на себя всю грязную работу. Реальность оказывается несколько иной:



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

Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Views 7.7K
Comments 1

Ловим утечки памяти в С/С++

Programming *C++ *C *
Tutorial


Приветствую вас, Хабровчане!


Сегодня я хочу немного приоткрыть свет над тем, как бороться с утечкой памяти в Си или С++.


На Хабре уже существует две статьи, а именно: Боремся с утечками памяти (C++ CRT) и Утечки памяти в С++: Visual Leak Detector. Однако я считаю, что они недостаточно раскрыты, или данные способы могут не дать нужного вам результата, поэтому я хотел бы по возможности разобрать всем доступные способы, дабы облегчить вам жизнь.

Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 29K
Comments 10

WorkerKiller

Ruby *Ruby on Rails *
Tutorial

Утечки ресурсов и/или памяти, а также её фрагментация являются обычной проблемой для всех языков программирования. Неважно есть там сборщик мусора или нет, компилируемый язык или интерпретируемый. Ruby не является исключением и сегодня мы немного поговорим про эти проблемы, варианты их решения и даже напишем своё собственное.

Читать далее
Rating 0
Views 1.6K
Comments 2