Re: WideStrig and Leaks Помогите пожалуйста
От: Closer  
Дата: 08.04.06 12:15
Оценка:
Здравствуйте, vasmann, Вы писали:

V>Доброго времини суток.

V>Вы не могли бы помочь вот в таком деле:
V>Создать обыкновенное приложение, в одном из методов вставить приблизительно такой код:
V>procedure Test;
V>var
V> ws: WideString;
V> StringIndex: Integer;
V>const
V> BIG_STRING: WideString = '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890' +
V> '123456789012345678901234567890123456789012345678901234567890';
V> STRINGS_COUNT = 1000;
V>begin
V> for StringIndex := 0 to STRINGS_COUNT — 1 do
V> begin
V> ws := ws + BIG_STRING;
V> end;
V> ws := '';
V>end;

V>Я знаю, код примитивный, но у меня он сьедает около 40Мб памяти. Я в полном замешательстве. Я знаю что принципы хранания String и WideString различны,

V>что при присвоении одного вайдстринга создается еще один, и в принципе логично куда уехало ~40МБ но вопрос, как мне эти 40Мб вернуть на родину?
V>Блин может я совсем уже запарился.
V>Спасибо.

Попробуй вот такую команду, у меня после её выполнения в Delphi 5 размер отедаемой прогой памяти по показаниям Task Manager заметно уменьшался.

    // Уменьшаем размер памяти занимаемый программой
    SetProcessWorkingSetSize (GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.