Как очистить память?

Автор Doom, 27.04.22, 13:38:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Doom

Доброго форумчане!

После открытия и закрытия файлов память КОМПАС-3D растет.

Как очистить память(кэш) запущенной программы КОМПАС-3D ?

K20.jpg

Doom

В хелпе перебрал все что связано с "очистить" "clear" "cache" "освободить" "удалить"
и не смог не чего найти.

Решил пойти со стороны WinApi

https://docs.microsoft.com/ru-ru/windows/win32/api/psapi/nf-psapi-emptyworkingset?redirectedfrom=MSDN

работает, но не знаю чем это может быть чревато.

    [DllImport("psapi.dll")]
    public static bool EmptyWorkingSet(IntPtr hProcess)
    {
    }

    private void Button2_Click(object sender, EventArgs e)
    {
        Process[] ThisProcess = Process.GetProcessesByName("KOMPAS");

        Interaction.MsgBox(ThisProcess.Count().ToString());

        bool Result = EmptyWorkingSet(ThisProcess[0].Handle);

        System.Threading.Thread.Sleep(1000);
        Interaction.MsgBox("1");
    }

Кирямба

Перезапустите Компас

Doom

Цитата: Кирямба от 27.04.22, 16:01:46Перезапустите Компас

этого я хочу избежать

p3452

Цитата: Doom от 27.04.22, 15:59:06работает, но не знаю чем это может быть чревато.
- Внутренними ошибками Компаса, или еще большим замедлением его работы из-за потери времени на восстановление кеша...

Doom

Цитата: p3452 от 27.04.22, 17:13:28- Внутренними ошибками Компаса, или еще большим замедлением его работы из-за потери времени на восстановление кеша...

да, смотрю в сторону выделения определенного размера памяти перед запуском КОМПАС-3D.
т.е. выдать 3 Гб памяти и остальное - исполняющей программе для легкой "отзывчивости" и системе.

А так система сама должна реагировать на освобождение не нужной памяти но в итоге получается подвисание.

Кирямба

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

Vi2

Цитата: Doom от 27.04.22, 13:38:32После открытия и закрытия файлов память КОМПАС-3D растет.

Ты проверял на десятке открытий и закрытий одного и того же файла? Если память после каждой операции открытия и закрытия растёт, то это явный признак неосвобождения памяти. Такое поведение роста памяти иногда может быть связано с эффектом дефрагментации памяти, но на одинаковых файлах он не сказывается.

Ну и заставить программу сбросить излишки или сделать дефрагментацию невозможно, если это не управляемый код - тот позволяет это сделать. Обычный С/С++ это сделать не позволяет.

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