Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: CL | DM;

Вниз

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

 
Ик сик   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
3-44057
Huc
2003-03-24 16:12
2003.04.14
---|Ветка была без названия|---


14-44384
copyr25
2003-03-26 18:20
2003.04.14
Сегодня по НТВ в 18:04, в новостях передали, что отныне


14-44447
Supreme 2
2003-03-30 01:16
2003.04.14
Новый и 100%-действующий способ повышения уверенности....


14-44336
Romano
2003-03-25 14:58
2003.04.14
как на Delphi писать маленькие программы?


1-44093
QUE
2003-04-02 17:52
2003.04.14
Как самому отрисовать TreeView ?