OberonCore
https://forum.oberoncore.ru/

Загруженные модули
https://forum.oberoncore.ru/viewtopic.php?f=1&t=2327
Страница 1 из 1

Автор:  Роман М. [ Понедельник, 08 Февраль, 2010 13:43 ]
Заголовок сообщения:  Загруженные модули

Запустив в несколько разных примеров из Obx, с помощью Loaded Modules я наблюдаю неосвобождение памяти средой ББ, хотя сообщается об отсутствии зависящих от них модулей-клиентов.
Чем вызвано такое поведение? Интересно выходит, что если я запускаю много разных модулей, то в некоторый момент ОС может сообщить Блэкбоксу об отсутствии системных ресурсов.
А если память таки в некоторый момент таки освобождается, то как долго будет удерживаться память под модули, выполнивших свою функцию?

Автор:  Евгений Темиргалеев [ Понедельник, 08 Февраль, 2010 18:02 ]
Заголовок сообщения:  Re: Загруженные модули

Модули автоматически не выгружаются.

В списке показан суммарный объём
csize-, dsize-, rsize-: INTEGER
Размеры секции кода, секции данных и секции символьной информации соответственно.

Автор:  Евгений Темиргалеев [ Понедельник, 08 Февраль, 2010 18:22 ]
Заголовок сообщения:  Re: Загруженные модули

В докуметации выгрузка затронута в 4. Forms
Цитата:
4.4 Guards
...
Listing 4-13. ObxPhoneUI with LookupGuard
...
Compilation also produced a new code file on disk. However, the old version of ObxPhoneUI is still loaded in memory! In other words: once loaded, a module remains loaded ("terminate-and-stay-resident"). This is not a problem, since modules are extremely light-weight and consume little memory. However, a programmer of course must be able to unload modules without leaving the BlackBox Component Builder entirely, in order to try out a new version of a module. For this purpose, the command Dev->Unload is provided which unloads the module whose source code is currently focused.
...

Автор:  Роман М. [ Вторник, 09 Февраль, 2010 17:02 ]
Заголовок сообщения:  Re: Загруженные модули

Евгений Темиргалеев писал(а):
В докуметации выгрузка затронута в 4. Forms
Цитата:
4.4 Guards
...
Listing 4-13. ObxPhoneUI with LookupGuard
...
Compilation also produced a new code file on disk. However, the old version of ObxPhoneUI is still loaded in memory! In other words: once loaded, a module remains loaded ("terminate-and-stay-resident"). This is not a problem, since modules are extremely light-weight and consume little memory. However, a programmer of course must be able to unload modules without leaving the BlackBox Component Builder entirely, in order to try out a new version of a module. For this purpose, the command Dev->Unload is provided which unloads the module whose source code is currently focused.
...

Что-то мне кажется. что такая модель поведения - нерациональна. Как вариант, может. поправить Dialog.Call, чтобы умел выгружать сразу после использования ...

Автор:  Валерий Лаптев [ Вторник, 09 Февраль, 2010 17:18 ]
Заголовок сообщения:  Re: Загруженные модули

Ну, насколько я знаю, и в винде динамические библиотеки сами не выгружаются. Тут лучше обеспечить явный механизм выгрузки - пусть, если требуется, программист сам выгружает.

Автор:  Евгений Темиргалеев [ Вторник, 09 Февраль, 2010 18:05 ]
Заголовок сообщения:  Re: Загруженные модули

Роман М. писал(а):
Что-то мне кажется. что такая модель поведения - нерациональна. Как вариант, может. поправить Dialog.Call, чтобы умел выгружать сразу после использования ...
Поправить не сложно. Потом расскажете результаты эксперимента :)

Автор:  Илья Ермаков [ Среда, 10 Февраль, 2010 20:52 ]
Заголовок сообщения:  Re: Загруженные модули

Ну да, частая ситуация из нашей профессии, когда есть два пути:

1) Сначала убедить себя в том, что "правильно и красиво, чтобы было вот так". А потом, уже вбивши это в голову, кинуться героически решать все возникающие проблемы. И в итоге получить удовольствие и повод для гордости, что столько технических проблем решено, чтобы всё получилось, как задумано.

2) Заглянуть вперёд и почуять "местом, где интуиция", сколько будет технических проблем, решить пожертвовать умозрительными красивостями, чтобы этих проблем избежать и сделать тупо, просто и быстро.

Нюансы этих случаев:
1) Обычно обилие решаемых технических проблем говорит о недоупрощённости исходной постановки, а значит, когда-нибудь в будущем, чаще всего, эти неувязки вылезают боком (проблемы "отложены в ящик Пандоры").

2) Если сделать только "тупо и просто", то тоже проблем потом будет много (однако в итоге работать с таким чужим продуктом всё равно лучше, чем с категорией 1, хотя бы по причине отсутствующих фортелей). Поэтому тут обязательно нужно добавить "... и расширяемо". Если точки расширения заложены, то можно спать спокойно. Что-то поменяется - наше "тупое" решение спокойненько адаптируется к новым условиям.

Конкретные примеры не раз обсуждались - исключения из Оберона перечислений и проч., чтобы избежать усложнения механизмов для динамической модульности.

Обычно заставить переключиться на работу по варианту 2) может очень большая перегрузка. Когда становится не до фантазий, лёжа на диване.

Автор:  Валерий Лаптев [ Четверг, 11 Февраль, 2010 13:40 ]
Заголовок сообщения:  Re: Загруженные модули

Илья Ермаков писал(а):
Ну да, частая ситуация из нашей профессии, когда есть два пути:

1) Сначала убедить себя в том, что "правильно и красиво, чтобы было вот так". А потом, уже вбивши это в голову, кинуться героически решать все возникающие проблемы. И в итоге получить удовольствие и повод для гордости, что столько технических проблем решено, чтобы всё получилось, как задумано.

2) Заглянуть вперёд и почуять "местом, где интуиция", сколько будет технических проблем, решить пожертвовать умозрительными красивостями, чтобы этих проблем избежать и сделать тупо, просто и быстро.

Обычно заставить переключиться на работу по варианту 2) может очень большая перегрузка. Когда становится не до фантазий, лёжа на диване.

Не... Еще большой опыт... Со временем самый тупой программер начинает понимать: чем проще, тем лучше...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/