OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 21 Сентябрь, 2017 20:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 27 Май, 2016 14:30 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7616
Откуда: Троицк, Москва
Пытаюсь напечатать список модулей по Meta ConnectToMods или Kernel.modList.
Свой модулёк почему-то появляется там многократно -- по количеству перезагрузок.

Если кто-то может быстро объяснить -- буду благодарен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Май, 2016 16:46 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2381
Откуда: Россия, Ярославль
Какая-то часть модуля, кажется, отвечающая за типы, остаётся в памяти после выгрузки, на случай если где-то остались ссылки на объекты из выгруженного модуля, уже обсуждали на форуме кажется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Май, 2016 19:38 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Да, именно так. У выгруженных там refcnt < 0 (-1).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Май, 2016 20:28 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7616
Откуда: Троицк, Москва
Для эксперименту прижал Кртл-Ф9 и дождался до тысячи.

По-моему, это какая-то хрень. Никаких объектов на куче мой модулёк не создаёт.

А предположим, для целей какой-нибудь числовой молотилки модуль кил на 10 генерится автоматически, компилируется и перезагружается, раз в минуту, сто тысяч раз.

И?

Понятно, что мы тут народ не слабонервный и в залезть в Кернел не замедлим.

Но интересует принципиальная сторона.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 28 Май, 2016 12:05 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Не, обьектов на куче-то Вы не создаёте, а принцип действия выгрузки единый всё равно: оставить секцию с дескрипторами типов в памяти.

Так что, если идёт интенсивная перезагрузка (не просто hot-update, а именно генерационное программирование в рантайме, неограниченнократное), то нужно переделывать эту логику.

В принципиальном плане... Разрешить полную выгрузку модуля, где нет POINTER TO-типов - безболезненная вещь.
Самое общее решение, видимо, - запуск GC перед выгрузкой (а так и происходит, кажется) - и GC должен подтвердить факт отсутствия объектов типов модуля. Или принудительно обнулить POINTER-ы на такие типы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 28 Май, 2016 12:14 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
(Кстати, внезапное осознание, что при динамическом связывании загруженного модуля в маш. коде, видимо, настраиваются также все конструкции IS, WITH, приведение типов - в маш. код подставляются адреса дескрипторов, с которыми сравнивать.)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 29 Май, 2017 18:17 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7616
Откуда: Троицк, Москва
Кстати, где настраиваются эти IS -- разве не в модулях, которые импортируют выгружаемый?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 29 Май, 2017 18:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Ну да. в тех модулях, которые импортируют тип выгружаемого модуля и с ним сравнивают.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB