Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Дефрагментация кучи: Навяено веткой Ошибка "Out of memory"   Найти похожие ветки 

 
3PO   (2005-06-01 22:02) [0]

http://delphimaster.net/view/1-1117582199/

А есть ли возможность использовать при частой реаллокации функцию HeapCompact для дефрагментации памяти и как это может сказаться на переменных, расположенных в куче?


 
Defunct ©   (2005-06-02 01:06) [1]

3PO   (01.06.05 22:02)  
вероятно можно.
Однако процедуры дефрагментации очень ресурсоемкие, и их оправдано использовать только в приложениях, которые работают 24/7/365.


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


 
Alex Konshin ©   (2005-06-02 01:19) [2]

Честно говоря, не знаю, использует ли менеджер памяти функции Heap* (у меня тут нет Delphi). Скорее всего нет. Скорее всего он берет через VirtualAlloc сегментами размером кратным 64K и потом уж сам разбирается внутри. Потому очень сильно сомневаюсь, что вызов HeapCompact даст какой-нибудь результат.


 
Digitman ©   (2005-06-02 08:23) [3]


> Alex Konshin ©   (02.06.05 01:19) [2]


> не знаю, использует ли менеджер памяти функции Heap*


нет, явно не использует.
но использует Local*

цитата :

The LocalAlloc function allocates the specified number of bytes from the heap


> Скорее всего он берет через VirtualAlloc сегментами размером
> кратным 64K


под собственно данные - да.
но не обязательно размером кратным 64К


> сомневаюсь, что вызов HeapCompact даст какой-нибудь результат


даже не сомневайся, так оно и есть.
ВММ никогда не возвращает в кучу то что он оттуда взял ранее, поэтому причиной фрагментированности кучи его алгоритм быть не может



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.036 c
1-1117526237
KillerToxa
2005-05-31 11:57
2005.06.29
Глюки TRichEdit и TJvRichEdit


1-1117727055
Серьезный Сэм
2005-06-02 19:44
2005.06.29
Как удалить файл с меткой "только для чтения"?


8-1109848229
Сашка2
2005-03-03 14:10
2005.06.29
Обтравка изображения


6-1111569342
TankMan
2005-03-23 12:15
2005.06.29
Не понимаю - почему ошибка при копировании через ClientSocket?:(


14-1117347749
NikNet
2005-05-29 10:22
2005.06.29
Делаю Joiner вот проблемма вытащить код из программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский