Re[5]: проблемы с очисткой памяти (есть вопросы)
От: hardcase Пират http://nemerle.org
Дата: 11.11.10 22:14
Оценка: :)
Здравствуйте, SanyaVB, Вы писали:


SVB> Cорри опечатался


SVB>
SVB>Bitmap[,] bmp = new Bitmap[n, m];
SVB>for (int i = 0; i < n; i++)
SVB>    for (int j = 0; j < m; j++)
SVB>        bmp[i,j].Dispose();
SVB>


Некисло так опечатался:

Bitmap[,] bmpArray = ....
foreach(var bmp in bmpArray)
    bmp.Dispose();
/* иЗвиНите зА неРовнЫй поЧерК */
проблемы с очисткой памяти (есть вопросы)
От: Alex Dav Россия  
Дата: 11.11.10 09:14
Оценка:
1. как я понимаю такие классы как BitMap требуют в конце работы с ними вызов Dispose()
Но вот проблема в наследство достался код где эти BitMap-ы засунуты в двумерный массив, массив конечно функцию Dispose() не предоставляет.
Что делать? Как очистить?

2. в программе где то происходит утечка памяти, т.к. программа работает несколько часов и использует постоянно пул потоков с макс значением около 20 (за первую минуту где то потоков 7-10 успевает завершиться, кстати если пул они завершаются ли?) — то эта утечка уже через полчаса приводит к огромным потерям по ресурсам и главное по скорсти работы . В конце функции котору поток исполняет поставил GC.Collect(); но блин утечки все равно продолжаются.
Приму любые советы

Спасибо.
Re: проблемы с очисткой памяти (есть вопросы)
От: SanyaVB  
Дата: 11.11.10 11:03
Оценка:
Здравствуйте, Alex Dav, Вы писали:

AD>1. как я понимаю такие классы как BitMap требуют в конце работы с ними вызов Dispose()

AD>Но вот проблема в наследство достался код где эти BitMap-ы засунуты в двумерный массив, массив конечно функцию Dispose() не предоставляет.
AD>Что делать? Как очистить?

двухмерный массив какого типа?

AD>2. в программе где то происходит утечка памяти, т.к. программа работает несколько часов и использует постоянно пул потоков с макс значением около 20 (за первую минуту где то потоков 7-10 успевает завершиться, кстати если пул они завершаются ли?) — то эта утечка уже через полчаса приводит к огромным потерям по ресурсам и главное по скорсти работы . В конце функции котору поток исполняет поставил GC.Collect(); но блин утечки все равно продолжаются.

AD>Приму любые советы

а можно кусок кода?
Re: проблемы с очисткой памяти (есть вопросы)
От: Аноним  
Дата: 11.11.10 11:13
Оценка:
Здравствуйте, Alex Dav, Вы писали:

AD>1. как я понимаю такие классы как BitMap требуют в конце работы с ними вызов Dispose()

AD>Но вот проблема в наследство достался код где эти BitMap-ы засунуты в двумерный массив, массив конечно функцию Dispose() не предоставляет.
AD>Что делать? Как очистить?
А что мешает пробежаться по массиву и для каждого Bitmap в нем вызвать Dispose?
Re[2]: проблемы с очисткой памяти (есть вопросы)
От: SanyaVB  
Дата: 11.11.10 11:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Alex Dav, Вы писали:


AD>>1. как я понимаю такие классы как BitMap требуют в конце работы с ними вызов Dispose()

AD>>Но вот проблема в наследство достался код где эти BitMap-ы засунуты в двумерный массив, массив конечно функцию Dispose() не предоставляет.
AD>>Что делать? Как очистить?
А>А что мешает пробежаться по массиву и для каждого Bitmap в нем вызвать Dispose?

Логику не понимаю зачем создавать двухмерный массив типа Bitmap, т.к. он сам по определению как бы "двухмерный" (хранит X,Y координаты пикселей). Может он имел ввиду двухмерный массив типа Color?
Re[2]: проблемы с очисткой памяти (есть вопросы)
От: Alex Dav Россия  
Дата: 11.11.10 11:46
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>двухмерный массив какого типа?

Bitmap[,] lstImages = new Bitmap[(int)(rowEnd-rowStart)+1,(int)(colEnd-colStart)+1];

SVB>а можно кусок кода?

вечером дам — щас сервер что то замолчал
Re[2]: проблемы с очисткой памяти (есть вопросы)
От: Alex Dav Россия  
Дата: 11.11.10 11:48
Оценка:
Здравствуйте, Аноним, Вы писали:


А>А что мешает пробежаться по массиву и для каждого Bitmap в нем вызвать Dispose?

моя неувереность что так можно (мой основной язык это С++ — вот и стремаюсь).
А можно?
Re[3]: проблемы с очисткой памяти (есть вопросы)
От: Alex Dav Россия  
Дата: 11.11.10 11:49
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Логику не понимаю зачем создавать двухмерный массив типа Bitmap, т.к. он сам по определению как бы "двухмерный" (хранит X,Y координаты пикселей). Может он имел ввиду двухмерный массив типа Color?

ну там типа хряняться кусочки одной большой картинки.
Re[3]: проблемы с очисткой памяти (есть вопросы)
От: SanyaVB  
Дата: 11.11.10 12:20
Оценка:
Здравствуйте, Alex Dav, Вы писали:

AD>Здравствуйте, Аноним, Вы писали:



А>>А что мешает пробежаться по массиву и для каждого Bitmap в нем вызвать Dispose?

AD>моя неувереность что так можно (мой основной язык это С++ — вот и стремаюсь).
AD>А можно?

Bitmap[,] bmp = new Bitmap[n, m];
for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        bmp.Dispose();
Re[4]: проблемы с очисткой памяти (есть вопросы)
От: SanyaVB  
Дата: 11.11.10 12:22
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Здравствуйте, Alex Dav, Вы писали:


AD>>Здравствуйте, Аноним, Вы писали:



А>>>А что мешает пробежаться по массиву и для каждого Bitmap в нем вызвать Dispose?

AD>>моя неувереность что так можно (мой основной язык это С++ — вот и стремаюсь).
AD>>А можно?

SVB>
SVB>Bitmap[,] bmp = new Bitmap[n, m];
SVB>for (int i = 0; i < n; i++)
SVB>    for (int j = 0; j < m; j++)
SVB>        bmp.Dispose();
SVB>

Cорри опечатался

Bitmap[,] bmp = new Bitmap[n, m];
for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        bmp[i,j].Dispose();
Re[6]: проблемы с очисткой памяти (есть вопросы)
От: xobotik Россия  
Дата: 11.11.10 22:28
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, SanyaVB, Вы писали:



SVB>> Cорри опечатался


SVB>>
SVB>>Bitmap[,] bmp = new Bitmap[n, m];
SVB>>for (int i = 0; i < n; i++)
SVB>>    for (int j = 0; j < m; j++)
SVB>>        bmp[i,j].Dispose();
SVB>>


H>Некисло так опечатался:


H>
H>Bitmap[,] bmpArray = ....
H>foreach(var bmp in bmpArray)
H>    bmp.Dispose();
H>


С уважением!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.