понедельник, 19 сентября 2011 г.

Утечка памяти в BlockingCollection

В .NET 4.0 появился класс BlockingCollection. С его помошью, к примеру, очень элегантно реализуется паттерн Producer-consumer.

Однако, как оказывается, в нем есть утечка памяти....

В тикете описан workaround, с реализацией обвертки над объектом, который использоется в коллекции, и последующим сбросом поля содержащего ссылку на реальный объект в null.
Как я понимаю это решает проблему только частично, так как в таком случае очишается ссылка на реальный объект, но ссылка на обвертку остается.

С помощью данного класса я в многопоточном режиме парсил csv файлы объемом в несколько гигабайт, с последующей записью в БД. Два дня убил на дебаг... После реализации workaround'a, у меня получилось загрузить файл объемом в 1GB, но на 13GB, я снова поймал Out of memory:(

понедельник, 12 сентября 2011 г.

OFF: О футболе

Рейтинг ФИФА:

40 Burkina Faso 646 -1 Down -15
41 Belarus 645 1 Up 9
42 Czech Republic 635 -4 Down -35
43 Jamaica 623 1 Up -9
44 Venezuela 615 -4 Down -33
45 Hungary 613 2 Up 10
46 Algeria 612 6 Up 37
47 South Africa 602 2 Up 5
48 Ukraine 598 -3 Down -22
49 Senegal 591 -3 Down -28
50 Honduras 589 1 Up -3

Дожились... Нас обошла Белоруссия и Буркина-Фасо, а в спину дышит Гондурас. ЕВРО будет нашим:)