OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 24 Апрель, 2024 01:42

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Сборка мусора в BlackBox
СообщениеДобавлено: Суббота, 02 Сентябрь, 2006 10:32 

Зарегистрирован: Воскресенье, 13 Август, 2006 18:45
Сообщения: 5
Откуда: Казахстан
Здравствуйте.
Я недавно заинтересовался средой Blackbox
и сразу же возник вопрос - есть ли в ней
принудительная сборка мусора?
Наподобие System.GC в Java?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 02 Сентябрь, 2006 17:27 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Kernel.Collect; однако, Kernel предназаначен для использования каркасом, интерфейс закрыт.
Интересно, а для каких (прикладных) задач нужна явная сборка мусора?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 02 Сентябрь, 2006 17:35 

Зарегистрирован: Воскресенье, 13 Август, 2006 18:45
Сообщения: 5
Откуда: Казахстан
Прикладных задач еще нет - я только начал программирование вообще и Component Pascal в частности.
Вопрос в чем - если циклически выполняются какие-то действия, под которые среда отжирает память, то OutOfMemory может возникнуть и раньше, чем сработает сборщик, если я правильно понимаю?
Вот я и подумал - вставить в цикл принудительную сборку мусора при каждой n-ой итерации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 07:50 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Сборщик мусора запускается при выделении памяти, если ее не достаточно. Он освобождает не используемые "объекты". Если после этого памяти все равно не хватит, среда запросит у системы дополнительную память в свой пул динамической памяти. Т. о., нехватка памяти уже зависит не от среды, а от возможностей системы и максимального объема памяти, который требуется Вашей задаче.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 10:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Firefly писал(а):
Прикладных задач еще нет - я только начал программирование вообще и Component Pascal в частности.
Вопрос в чем - если циклически выполняются какие-то действия, под которые среда отжирает память, то OutOfMemory может возникнуть и раньше, чем сработает сборщик, если я правильно понимаю?
Вот я и подумал - вставить в цикл принудительную сборку мусора при каждой n-ой итерации.


Если только начинаете -- ни в коем случае не вставлять! В общем случае можете только помешать сборщику.
Просто вообще забудьте про эту проблему -- пока.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 10:45 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Евгений Темиргалеев писал(а):
Kernel.Collect; однако, Kernel предназаначен для использования каркасом, интерфейс закрыт.
Интересно, а для каких (прикладных) задач нужна явная сборка мусора?

Чтобы не импортировать Kernel, существует еще Services.Collect.
Однако в остальном - см. выше....

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 11:15 

Зарегистрирован: Воскресенье, 13 Август, 2006 18:45
Сообщения: 5
Откуда: Казахстан
Здравствуйте.

Да, возможно я слишком рано полез в системные нюансы среды. Сначала нужно получше узнать язык.
Еще несколько вопросов специалистам:
1. Можно ли на BlackBox написать нечто вроде простенького сервера приложений, который будет обрабатывать запросы с клиентов, и в котором будет спрятана логика работы с БД? Скорее даже так - стоит ли это делать именно в BlackBox, или на Java(C#) задачу можно решить проще?
2. Возможна ли в среде BlackBox автообновление клиентских приложений с сервера?. Т.е. когда при запуске клиента он скачивает с сервера дополнительные модули, расширяющие его функциональность.
3. И последнее - планируют ли разработчики BlackBox'а дальнейшее развитие среды?
Дело в том, что я сейчас приступаю к дипломной работе. В качестве языка разработки склоняюсь к Java(по многим причинам, среди них главная - наши разработчики пишут на Java, т.е. всегда можно будет спросить у них, если что-то непонятно).
А недавно наткнулся на Component Pascal, и он мне сразу понравился (в первую очередь синтаксисом - после C-подобной Явы просто ляпота:-).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 14:45 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Здравствуйте!

1) С работой с сетью проблем нет - существует подсистема Comm, которая предоставляет высокоуровневые абстракции для сетевых соединений. Однако серверу требуется многопоточность. Текущая версия ББ многопоточности не поддерживает (точнее, поддерживается коллективная многозадачность, как в Win 3.1, когда отдельные действия из очереди выполняются основным потоком одно за другим). Можно использовать системные потоки Windows, если в потоке не будут использоваться динамические объекты. Касательно полноценного решения этой проблемы скажу ниже...

2) Можно просто передать по сокетному соединению кодовый файл модуля, сохранить его и затем загрузить.

3) По поводу развития среды и одновременно многопоточности... Не хотел говорить пока, но раз уж разговор зашел :-)
Мы (команда ООО "Метасистемы") сейчас находимся на стадии финального тестирования и документирования многопоточной версии среды - Active BlackBox 1.5.. Разработано новое ядро с поддержкой безопасной многопоточности, сборкой мусора и обработкой трепов для потоков. Написаны модули с высокоуровневыми абстракциями: задачи (Tasks), взаимодействующие через рандеву, мониторы. Готовимся к выпуску бета-версии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 15:33 

Зарегистрирован: Воскресенье, 13 Август, 2006 18:45
Сообщения: 5
Откуда: Казахстан
Илья Ермаков писал(а):
3) По поводу развития среды и одновременно многопоточности...

Это обнадеживает. О сроках не спрашиваю - плохая примета;-)
Спасибо за развернутый ответ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 03 Сентябрь, 2006 17:45 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Цитата:
Еще несколько вопросов специалистам...

Я не специалист, но всё-таки отвечу :roll:

Firefly писал(а):
1. Можно ли на BlackBox написать нечто вроде простенького сервера приложений, который будет обрабатывать запросы с клиентов, и в котором будет спрятана логика работы с БД? Скорее даже так - стоит ли это делать именно в BlackBox, или на Java(C#) задачу можно решить проще?


В BlackBox-е сетевые программы пишутся с использованием неблокирующих сокетов. С одной стороны это даёт хорошую производительность, с другой - асинхронное программирование сложнее, и запросы должны обрабатываться без использования блокирующего кода. С введением многопоточности в BlackBox появится возможность выносить блокирующий код в потоки.


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

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


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

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


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

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