Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как освободить память? / 6 сообщений из 6, страница 1 из 1
16.05.2007, 11:07
    #34528428
novT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освободить память?
У меня такая проблема, подскажите, пожалуйста.
Открываю объект, закрываю объект и память после закрытия объекта не освобождается, как ее освободить?

w $S
16681496
Set a=##class(A.BB).%OpenId(1)

w $S
16671024
d a.%Close()

w $S
16671024
...
Рейтинг: 0 / 0
16.05.2007, 11:52
    #34528625
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освободить память?
В новых версиях каше %Close() ничего не делает. Для закрытия объекта нужно стереть его последнее упоминание, например
k a
или
s a=""
...
Рейтинг: 0 / 0
16.05.2007, 12:20
    #34528782
newbie'
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освободить память?
"новые версии" - начиная с 5.0.х
для legacy поддержки %Close в 5.0.х для всех процессов используется
Код: plaintext
Do $ZU( 69 , 56 , 1 )

начиная с версии 5.1 legacy поддержки %Close нет.
...
Рейтинг: 0 / 0
16.05.2007, 19:41
    #34530588
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освободить память?
А если например какая-нибудь сложная объектов, которые связаны друг с другом ссылками.
Они что, все будут постоянно висеть в памяти? А зачем?
...
Рейтинг: 0 / 0
16.05.2007, 23:22
    #34530852
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освободить память?
...
Рейтинг: 0 / 0
17.05.2007, 10:25
    #34531397
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освободить память?
Мне тоже интересно было бы найти решение такой задачки.
Дано: каше 5.2+, значение +oref известного живого объекта, и неизвестное количество ссылок на него.
Найти: способ как убить объект игнорируя ссылки на него.

Пока есть такое половинчатое решение:
s i="" f s i=$o(@i) q:i="" i $isobject(@i),+@i=+oref k @i
Это удалит все локальные переменные на текущем уровне стека которые указывают на этот объект.

Но остаются еще вопросы:
1) как удалить локальную переменную на другом уровне стека
2) как удалить ссылку на объект если она атрибут другого объекта?

Такой вот спортивный вопросик.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как освободить память? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]