Главная страница
    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.04 c
1-1118128230
Dmitrij_K
2005-06-07 11:10
2005.06.29
Модалиные формы


14-1117781079
Jeer
2005-06-03 10:44
2005.06.29
МПК "Эльбрус"


3-1116312633
ANB
2005-05-17 10:50
2005.06.29
Как побыстрее удалить большую часть записей из таблицы ?


1-1118301611
alsov
2005-06-09 11:20
2005.06.29
Вывод большого битмапа


4-1114862396
Новичек
2005-04-30 15:59
2005.06.29
Рисование с помощью API.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский