Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос про память

1.7K
03 мая 2006 года
ilyes
181 / / 22.02.2006
Есть многопоточный сервер передающий файлы по сети клиентам. На каждый запрос клиента (на получение, сохранение или закрытие файла) на сервере создается новый поток. И все вроде работает, то вот посмотрел я в диспетчере задач и немного удивился. Когда клиент шлет запрос на получение файла например, выделяется скажем 10 метров на буфер для файла, файл отправляется, освобождается буфер, но с каждым разом сервер начинает все больше весить, толстея с каждым запросом примерно от 5 до 50 Кбайт. Если запросов будет много, а их будет очень много, то это капец. Но стоит мне свернуть сервер а потом развернуть, и он начинает весить те 1000 с чем-то Кбайт которые весил при запуске. Кто-нибудь знает что это за батва такая и как с ней бороться. Только не говорите что надо програмно сворачивать и разворачивать сервер.
585
03 мая 2006 года
honeybeer
297 / / 06.09.2004
Цитата:
Originally posted by ilyes
<skipped>


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

1
03 мая 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by honeybeer
Без исходников здесь трудно что-то сказать... Или ты думаешь, здесь такие профи что по текстовому описанию восстанавливают твой код?
Проблемы с высвобождение памяти...


Он в нас верит!!! :) :) Он знает - здесь все телепаты!!! :) Шучу.
Но если тебе нужна помощь вопросы стоит формулировать более тщательно. Не обязательно приводить весь код - но хотыбы выделение ресурсов и их высвобождение обрисовать надо.
Проверь в первую очередь завершение потоков. Все ресурсы, которые были выделены для потока должны быть освобождены.

1.7K
04 мая 2006 года
ilyes
181 / / 22.02.2006
Цитата:
Originally posted by kot_
Он в нас верит!!! :) :) Он знает - здесь все телепаты!!! :) Шучу.
Но если тебе нужна помощь вопросы стоит формулировать более тщательно. Не обязательно приводить весь код - но хотыбы выделение ресурсов и их высвобождение обрисовать надо.
Проверь в первую очередь завершение потоков. Все ресурсы, которые были выделены для потока должны быть освобождены.



Д все как обычно, как везде написано:
TFileStream *fs = new TFileStream(...);
char *buf = new char[...
fs->Read(char,....
...
...
delete buf;
delete fs;

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

406
04 мая 2006 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by ilyes
Д все как обычно, как везде написано:
TFileStream *fs = new TFileStream(...);
char *buf = new char[...
fs->Read(char,....
...
...
delete buf;
delete fs;

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



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

1.7K
05 мая 2006 года
ilyes
181 / / 22.02.2006
Цитата:
Originally posted by vitaly2003s
Конечно бывает. Просто система когда видит что приложение не активно и занимает много оперативной памяти,перемещяет часть занимаемой приложением оперативной памяти в файл подкачки на диск,и поэтому у тебя уменьшается значение используемой памяти в диспетчере задач. А когда потребуется система снова может вернуть в оперативную память требуемые данные. Хотя это и не обязательно.



Понятно, наверно я всетаки где-то, чо-то не удаляю.

1.7K
15 мая 2006 года
ilyes
181 / / 22.02.2006
А если у меня фукция есть
 
Код:
void __fastcall CryptBuf(unsigned char *Buf,int LowValue,int HighValue,int Key)

то может переменную *Buf удалять надо, ато вообще нет никаких идей почему прога начинает жрать все больше памяти, ведь я удаляю все переменные со *, может статические тоже надо удалять???
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог