Редактор PascalABC.MET

В процессе простых манипуляций редактирования файлов *.pas объем используемой ОП увеличивается до десятков гигабайт. Вопрос: Есть возможность настроить редактор для избавления от указанной проблемы ?

Это называется утечки памяти. И их надо ловить и исправлять, а не настраивать.

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

Десятки мегабайт это круто. У меня столько памяти нет ) А скриншот не приложите?

Может быть, это происходит, если переместить курсор в конец очень длинной строки? Возможно, это из-за того, что при этом IDE выделяет память под все символы матрицы размером примерно (x, y) курсора в окне редактирования.

А попробовать перед тем как описывать предположение?

##var f := System.IO.File.CreateText('1.pas');
f.Write('## ');

loop 1 shl 16 do
f.WriteLine(';');

f.Write('var s := ''');
loop 1 shl 16 do f.Write('*');
f.Write(''';');

f.Close;

По вашей логике при чтении этого файла IDE вылетела бы, потому что попыталась выделить массив больше максимально возможного.

Да и странно матрицей символы хранить. А если в самой большой строчке добавить несколько букв - выделять ещё матрицу?

проблема действительно есть. лично у меня происходит, когда окно со списком свойств и методов по каким то причинам не открывается. почему оно не открывается выяснить пока не удалось, но в эти моменты моменты может съедать 200-500 мб против обычных 75

Ну это не десятки гигабайт. Эта цифра потом накапливается или держится?

особо не зацикливался на этом. иногда через какое-то время окно начинало появляться само, иногда просто перезапускал ide. если проявится ещё раз - постараюсь дать более конкретный ответ

.NET программа занимает доступную память даже если на нее никто не ссылается. Память очищается только если потребуется новая память. Поэтому NET приложения обычно прожорливы

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

Например недавно не мог добиться подсказки от ReadAllText(' '). Не помогали перезапуски, отключение функции “использовать компилятор для интелисенс”. Но помогло явное подключение pabcsystem. Это наталкивает на мысль, что возможно это как-то связано с пересечением имён из pabcsystem и из .net пространств. Тоже не уверен, что это верно, но мало ли.

В этот раз озу выжрало не так сильно, но объёмы всё таки прибавились

Всё работает. Пересечения тут быть не может, и оно ни при чём

Анализатор кода не работает на строчке с ## - возможно с этим спутали. Всё же ReadAllText часто на первой строчке коротких программ находится.

Ну и + если не поставить в конце короткой программы ; и дальше писать перед ним - анализатор кода постоянно выключается и включается при написании.

ну так просто эта ошибка не отлавливается… если бы можно было дать конкретный список функций, то было бы куда проще. тут явно есть ещё какие-то факторы

у меня проявлялось так и так

У вас показывает точки сворачивания кода? По ним часто видно, когда анализатор кода задыхается, а когда работает.

Поидее не показывать подсказку по точке после ReadAllText может только если анализатор кода отрубился и не может врубится. Потому что точка после него работает не зависимо от того, что передали в ReadAllText (даже если скобок вообще нет) - лишь бы синтаксически получалось пропарсить (то есть лишь бы было видно что это именно вызов ReadAllText, а не какая-то чушь вроде ReadAllText(> ).

если рассматривать короткие программы, то там обычно надо как раз таки дождаться когда они появятся. (видимо иногда они могут вообще не появится). если с begin - end, то тут и с точками подсказка может не появиться. вот кстати, что то типо такого обычно наблюдается