Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Ломтева Светлана
Зарегистрирован: 20.05.2005 Сообщения: 2
|
Добавлено: Пт Май 20 2005 10:26 Заголовок сообщения: распределение памяти при взаимодействии Delphi и InterBase |
|
|
В процессе выполнения программы возникает ошибка: "Project QReport.exe exception class EOutOfMemory witch message 'Out of memory'. Process stopped".
Анализ показал, что источником ее является процедура IBAlloc модуля IB.
Если, кто сталкивался с такой проьлемой, отзовитесь.
PS: Delphi 7.0 Enterprise. |
|
Вернуться к началу |
|
 |
Dmitry Muza
Зарегистрирован: 06.12.2005 Сообщения: 1
|
Добавлено: Вт Дек 06 2005 15:02 Заголовок сообщения: |
|
|
давно было но все-таки:
В юните IBCustomDataSet есть класс TIBCustomDataSet.
Одно из proteckted свойство BufferChunks по умолчанию равно BufferCacheSize.
Начиная с какой-то версии он стал равен 1000, а был 32.
Там же есть метод TIBCustomDataSet.InternalOpen; в нем при открытии таблицы выделяется память.
В одном из случаев считается по формуле:
FBufferChunkSize := FRecordBufferSize * BufferChunks
иногда размер FBufferChunkSize получается большой и после IBAlloc не может его получить.
Во втором случае размер зависит от свойства UniDirectional если оно true то выделяется FBufferChunkSize := FRecordBufferSize * UniCache, по умолчанию UniCache=2. |
|
Вернуться к началу |
|
 |
|