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

Вниз

Растут затраты памяти   Найти похожие ветки 

 
Ик сик   (2003-03-24 15:13) [0]

При работе с ADODataset, ADOCommand, ADOQuery растут затраты занимаемой памяти. В какой-то момент затраты оперативки снижаются и повышаются затраты виртуальной памяти. Есть ли какая-нибудь возможность этого избежать.
Даже при удалении соотв. объектов память не освобождается.


 
Mystic   (2003-03-24 15:23) [1]

Посмотри AllocMemCount и AllocMemSize.
Если также увиличиваются - значит утечка памяти в Delphi-коде. Иначе это происки ADO.


 
Ик сик   (2003-03-24 15:55) [2]

Не увеличиваются.
Неужели ничего нельзя с этим сделать? Как-то очистить виртуальную память?


 
blackman   (2003-03-24 16:01) [3]

1.Не работать в WIN95 и WIN98.
2.Не тащить все таблицы подряд.
3.Не открывать по 100 раз, если можно 1 ...


 
Ик сик   (2003-03-24 16:10) [4]

1. Работаю в Win2K
2. Работаю с одной таблицей
3. Открываю соединение только один раз, потом посылаю разные запросы.


 
Mystic   (2003-03-24 16:10) [5]

Тогда смотри методы ADO, есть ли там чего полезного... Если нет, то сомневаюсь, чтобы что-либо можно было сделать.


 
Ик сик   (2003-03-24 16:35) [6]

:(((
За 4 часа работы - 17mb
Пришлось написать вторую программу для перезапуска первой.


 
blackman   (2003-03-24 16:42) [7]

>Ик сик
Значит не ADO, проверь разные запросы...


 
Ик сик   (2003-03-24 16:50) [8]


> blackman

Со всеми запросами тоже самое, просто у меня к БД обращение очень интенсивное, в ином случае я бы и не заметил.

Хочешь, если время есть, попробуй. Запихни в цикл 10000 запросов и посмотри в Task Manager как VM увеличилась.


 
sniknik   (2003-03-24 17:05) [9]

Ик сик (24.03.03 16:50)
а какая у тебя дельфя? и версия ADO?

была у меня подобная проблема (похожая, с каждым запросом росла память и количество Дескрипторов, в диспетчере задач смотрел, до полного зависания), прошло само собой после какогото апгрейда (ADO,Delphi,Win2000) чего было до сих пор не знаю, повторить не получается.

код который это вызывал сохранил. (цикл на SQL, запрос к линк серверу, через ADO - Jet) запушеный на Query Analizer-е вызывал тоже самое.


Ик сик (24.03.03 16:35)
> Пришлось написать вторую программу для перезапуска первой.
зря, достаточно пересоздать ДатаМодуль. (мне помогало)


 
Ик сик   (2003-03-24 17:15) [10]

Delphi 6, версия ADO 2.5,
DataModule.Free не освобождало памяти.

Я сейчас с работы убегаю. Завтра вас дораспрашиваю.

Спасибо.


 
Ик сик   (2003-03-25 14:22) [11]

У кого-нибудь есть какие-нибудь идеи? Странная такая вещь.


 
sniknik   (2003-03-25 14:59) [12]

сделай такую вещь
1 создаеш линкед сервер (работает с использованием ADO)

EXEC sp_addlinkedserver
@server = "MYDBFs",
@provider = "Microsoft.Jet.OLEDB.4.0",
@srvproduct = "OLE DB Provider for Jet",
@datasrc = "D:\",
@provstr = "dBASE IV"

и выполняеш простенький код (все без участия дельфей, в квери анализере) таблицу естественно свою подставь (размер и количество полей неважно, с разными пробовал, результат одинаковый)
DECLARE @i int
SET @i = 1
WHILE @i < 1000 BEGIN
IF EXISTS (SELECT * FROM sysobjects WHERE (name = N"CashSail"))
BEGIN
INSERT INTO CashSail SELECT * FROM mydbfs...CashSail
END ELSE BEGIN
SELECT * INTO CashSail FROM mydbfs...CashSail
CREATE INDEX CashIndex ON CashSail (CashNumber)
CREATE INDEX ZIndex ON CashSail (ZNumber)
END
SET @i = @i + 1
PRINT @i
END

внимательно смотри на память и дескрипторы, если будут непрерывно расти и в итоге получиш следующую ошибку, то помогут только глобальные апдейты.
Server: Msg 7399, Level 16, State 1, Line 6
OLE DB provider "Microsoft.Jet.OLEDB.4.0" reported an error. The provider did not give any information about the error.


 
Ик сик   (2003-03-25 15:07) [13]

А что такое линкед сервер и квери анализер? :)))


 
sniknik   (2003-03-25 15:42) [14]

Сорри, я думал ты знаком с MSSQL сервером. Если нет то такой способ проверки не годится.
линкед сервер - прилинкованая база к MSSQL из внешнего источника (любой OLE DB провайдер)
квери анализер - тулза из поставки, можно запросы делать.
(Delphi не единственная ADO использует)


 
Ик сик   (2003-03-25 15:45) [15]

Да, я никак MSSQL не поставлю, пока с Access работаю :(



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

Форум: "Базы";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-44207
George M
2003-04-01 17:18
2003.04.14
Поведение TEdit в run time как в design time


14-44356
Alexandr
2003-03-28 14:29
2003.04.14
программа нужна


4-44497
VitalMoya
2003-02-12 22:25
2003.04.14
LogonUser


3-44028
sergun
2003-03-25 19:40
2003.04.14
как в таблице paradox удалить поле


9-43981
SCaT
2002-11-13 17:58
2003.04.14
X





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