Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Утечка памяти 
:(
    Опции темы
Novator
Дата 3.9.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.11.2005

Репутация: нет
Всего: нет



Столкнулся с такой проблеммой: в определенный момент времени программе перестает хватать памяти (и оперативной и виртуальной). У меня памяти, я считаю, предостаточно.

Насколько я понимаю после пользования объекта ему необходимо присвоить значение Nothing. Я думал это достаточное условие, что бы он после не занимал места.

Привожу функцию, которая кушает память:

Код

Public Function GetZ(ByRef pZRaster As IRaster, x As Double, y As Double)
    Dim pRasterLy As IRasterLayer
    Dim pPoint As IPoint
    Dim pIdentify As IIdentify
    Dim pRasObj As IRasterIdentifyObj
    Dim PixelValue As String
    Set pRasterLy = New RasterLayer
    pRasterLy.CreateFromRaster pZRaster
    Set pIdentify = pRasterLy
    Set pPoint = New Point
    pPoint.PutCoords x, y
    'Identify on the raster layer
    Dim pIDArray As IArray
    Set pIDArray = pIdentify.Identify(pPoint)
    'Get the raster information
    If Not pIDArray Is Nothing Then
        Set pRasObj = pIDArray.Element(0)
        PixelValue = pRasObj.Name
        GetZ = pRasObj.Name
        
        Set pRasObj = Nothing
        PixelValue = ""
        pIDArray.RemoveAll
        Set pIDArray = Nothing
    Else
        GetZ = "NoData"
    End If
    
    Set pRasterLy = Nothing
    Set pPoint = Nothing
    Set pIdentify = Nothing
End Function


Эта функция циклически вызывается. Если закоментировать строку Set pRasObj = pIDArray.Element(0), и возвращаемому значению функции присвоить какую-нибудь константу - память остается на месте.

Все незнакомые объекты из библиотеки ArcObjects

PM MAIL   Вверх
Тутанхамец
Дата 8.9.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Не знаю такой иблиотеки. Set obj = nothing обнуляет указатель. Объект выгружается из памяти только в том случае, если больше на него указателей нигде нет. Видимо, у тебя после цепочки создания объектов где-то появляется еще указатели, которые ты не обнуляешь. 

Кстати. Ты возвращаешь из функции только текст? Тогда добавь к ее объявлению as string. 

И посмотри нет ли у фэтих объектов специфического метода типа close.
PM MAIL   Вверх
Akina
Дата 8.9.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Если объект создается оператором New, перед очисткой ссылки на него присваиванием к Nothing необходимо явно закрыть объект методом Close, Quit или какой там у него есть.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0608 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.