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 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА <<<... | 17—8 | 7—1 Всего сообщений в теме: 117; страниц: 12; текущая страница: 12
№ 7 06-02-2003 20:17 | |
>>>Память обратно Виндосу БлэкБокс не отдал
Это проблема не BlackBox a менеджера памяти Windows.
Огромное количество программ не отдает память обратно (MS SQL Server, Outlook, MS Office etc.)
Есть программные решения, которые позволяют отобрать память принудительно. Я например пользуюсь FreeRAM (бесплатный)
http://www.yourwaresolution.com
Там в настройках можно задать, когда отбирать память обратно в систему.
№ 6 06-02-2003 17:35 | |
>>>найдено поиском в хелпе ББ, может оно ?
>>>DEFINITION Services;
>>>. . . .
>>> PROCEDURE Collect;
>>>. . . .
>>>PROCEDURE Collect
>>>Forces a garbage collection.
Сейчас попробовал, нет, не оно. Память обратно Виндосу БлэкБокс не отдал, а сам для себя эту память он считает свободной и без
Services.Collect();
№ 5 06-02-2003 15:45 | |
найдено поиском в хелпе ББ, может оно ?
DEFINITION Services;
. . . .
PROCEDURE Collect;
. . . .
PROCEDURE Collect
Forces a garbage collection.
№ 4 06-02-2003 11:51 | |
Акуличев Дмитрий:
>>>А кто сказал, что сборщик мусора должен отдавать память непременно
>>>в систему? А может ему хочется память придержать для собтвенного
>>>использования.
Slava:
>>>Обычно сборщики мусора стартуют не когда ты этого хочешь,
>>>а когда они этого хотят (когда память кончается).
>>>Присваивая переменной NIL ты говоришь системе, что когда сборщик
>>>мусора будет работать эту память можно собрать.
>>>Можно сделать простую проверуку: в цикле New(a); a=NIL;
>>>и смотреть за памятью. По идее (если все правильно),
>>>памать начнет расти, а затем резко упадет.
Вы правы, сборщик мусора хоть и работает, но системе память назад потом не отдает (проверял циклом - он новой памяти у системы не забирал - пользовался взятой в первый раз).
Значит так и должно быть... Жалко...
№ 3 06-02-2003 11:21 | |
>>>Обычно сборщики мусора стартуют не когда ты этого хочешь, а когда они этого хотят (когда память кончается)
в Java и JScript есть способ известить gc о том, что ты хочешь сборки мусора. System.gc() (правда в JS им советуют не пользоваться).
Но не факт, что очищенная от мусора область возвратится в системную кучу
№ 2 05-02-2003 21:25 | |
А кто сказал, что сборщик мусора должен отдавать память непременно в систему? А может ему хочется память придержать для собтвенного использования.
№ 1 05-02-2003 19:10 | |
Обычно сборщики мусора стартуют не когда ты этого хочешь, а когда они этого хотят (когда память кончается). Присваивая переменной NIL ты говоришь системе, что когда сборщик мусора будет работать эту память можно собрать.
Можно сделать простую проверуку: в цикле New(a); a=NIL;
и смотреть за памятью. По идее (если все правильно), памать начнет расти, а затем резко упадет.
<<<... | 17—8 | 7—1 Всего сообщений в теме: 117; страниц: 12; текущая страница: 12
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|