Component Pascal и среда разработки BlackBox |
Здравствуйте!
Начал изучать новый язык программирования Component Pascal
http://www.oberon.ch/
http://www.inr.ac.ru/~info21/
http://www.uni-vologda.ac.ru/oberon/
Но нигде не нашел рускоязычного сайта, на котором был бы форум посвященный этому
языку.
Наверняка среди посетителей этого сайта есть специалисты по языку Component Pascal и
среде BlackBox.
А посему, перейду сразу к делу. У меня есть вопрос про сборщик мусора в BlackBox.
Может быть кто-нибудь сможет объяснить что нужно
сделать чтобы он заработал?
Я имею в виду следующую простейшую тестовую програмку:
MODULE sgTest003;
IMPORT StdLog;
PROCEDURE Проверка*;
TYPE A = POINTER TO ARRAY 10000000 OF INTEGER;
VAR a: A;
BEGIN
StdLog.String(" Создаю "); StdLog.Ln();
NEW(a); (* В этом месте я вижу через Windows Task Manager как BlackBox забрал
память*)
StdLog.String(" Выхожу из области видимости "); StdLog.Ln();
a := NIL; (* Я думаю, что сборщик мусора должен активизироваться в этом месте *)
END Do;
(* В этом месте я ожидаю, что BlackBox отдаст память обратно в распоряжение Windows
XP*)
BEGIN
END sgTest003.
Вызываю процедуру Проверка посредством кликания мышью на
(Коммандер)sgTest003.Проверка
и наблюдаю через Task Manager за памятью. BlackBox ее только забирает и назад не
отдает.
Даже если я выгружу модуль Dev ---> Unload, все равно BlackBox не вернет память
обратно
в распоряжение Windows XP. Память возвращается только когда я выключаю сам
BlackBox 1.4 Shareware Edition.
Кто-нибудь понимает в чем дело?
С уважением,
Сергей Губанов
Всего в теме 117 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА <<<... | 107—98 | 97—88 | ...>>> Всего сообщений в теме: 117; страниц: 12; текущая страница: 2
№ 107 22-08-2007 03:40 | |
Черепашка в пакете для детей плоская и зелёная. Лапками не шевелит. Это грустно.
Сделайте ей четыре фазы. Я нарисую повеселее в квази-3D.
Как с Альфа-каналами? Прозрачность и полупрозрачность бы.
№ 106 31-07-2006 11:19 | |
Выпущена версия 0.5 библиотеки MT:
http://sources.metasystems.ru/mt
В модуле MtMem введены процедуры для работы с динамическими массивами переменной длины (аналог SetLength в Делфи + процедура резервирования памяти) и некоторые другие средства.
Внесены исправления в модуль MtSql и документацию модуля MtSearch.
№ 105 09-07-2006 16:23 | |
Ответ на »сообщение 104« (Илья Ермаков)
___________________________
Выпущена новая версия библиотеки для BlackBox MT 0.4:
http://sources.metasystems.ru/mt/
и первый выпуск Advanced BlackBox Framework:
http://sources.metasystems.ru/abf/
- Open-Source-проекта, цель которого - расширение стандартного каркаса BlackBox дополнительными средствами, такими как работа с мультимедиа, графика, параллельные вычисления, базы данных, перманентные хранилища и т.п.
№ 104 09-06-2006 07:16 | |
Ответ на »сообщение 103« (Андрей Хохлов)
___________________________
Ну, модуль B сначала все-таки надо выгрузить, конечно.
Шрифты настраиваются в Edit->Preferences. Проблем с русским текстом никаких быть не должно, если вы используете наш последний Service Pack 3.1.
А вообще, у меня есть предложение не захламлять эту ветку конкретными вопросами касательно пользования ББ... Если начинаете активно изучать ББ, то лучше уже обсуждать в специализированных ветках на blackbox.metasystems.ru. (да не сочтет уважаемое community за рекламу :-) )
№ 103 09-06-2006 06:45 | |
Ответ на »сообщение 102« (Илья Ермаков)
___________________________
Нет, я пытаюсь его "перекомпилировать и выгрузить" и вижу ошибку. Может из-за перекрытия окон (не помню)?
Кстати, как в русском BB настроить шрифты, а то в консоли русские буквы появляются только после выделения фрагмента и явного назначени шрифта?
№ 102 09-06-2006 06:23 | |
Ответ на »сообщение 101« (Андрей Хохлов)
___________________________
Нет, Андрей, модуль А тоже выгружается свободно. Просто он при первом же обновлении экрана снова будет подгружен в память (диалог-то открыт). Поэтому Вы, видимо, открываете снова Loaded Modules и видите его, из чего делаете неверный вывод, что он не выгружается.
№ 101 09-06-2006 06:08 | |
Короткий пример перезагрузки модулей:
MODULE A;
IMPORT
Dialog, StdLog;
TYPE
T = ARRAY 10 OF CHAR;
D*= RECORD
t*: T;
END;
VAR
d*: D;
PROCEDURE Set*(t: T);
BEGIN
d.t:=t;
Dialog.Update(d);
StdLog.String(t);
StdLog.Ln()
END Set;
END A.
MODULE B;
IMPORT
A;
PROCEDURE Update*();
BEGIN
A.Set("QWERTY")
END Update;
END B.
CMD B.Update()
Модуль B можно перекомпилировать и перегружать сколько угодно, а вот модуль A - нет
№ 100 09-06-2006 02:56 | |
Ответ на »сообщение 97« (Trurl)
___________________________
Ответ на »сообщение 95« (Илья Ермаков)
___________________________
А что мы будем делать со ссылками на выгружаемые объекты?
Ищутся и заменяются на новые по тому же принципу, как и при сборке мусора...
№ 99 09-06-2006 02:56 | |
Ответ на »сообщение 98« (Trurl)
___________________________
Ответ на »сообщение 93« (AVC)
___________________________
>>> Если я не ошибаюсь, сборщик мусора не знает о процедурных переменных, а знает только о методах.
Вообще, он и о методах не знает. Но ему можно объяснить.
Ну, я имел в виду, что методы (в О2 и КП) явно перечислены в дескрипторе типа.
Поэтому для усовершенствования сборщика мусора не потребуется модифицировать "рантаймовские" структуры данных.
А вот откуда сборщик мусора извлечет информацию о процедурных переменных?
№ 98 09-06-2006 02:47 | |
Ответ на »сообщение 93« (AVC)
___________________________
>>> Если я не ошибаюсь, сборщик мусора не знает о процедурных переменных, а знает только о методах.
Вообще, он и о методах не знает. Но ему можно объяснить.
<<<... | 107—98 | 97—88 | ...>>> Всего сообщений в теме: 117; страниц: 12; текущая страница: 2
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|