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

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

w $S
16671024
d a.%Close()

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

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

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

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

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


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