Member 12903437 Ответов: 1

Как решить проблему утечки памяти в boost logger?


Во время ведения журнала С помощью BOOST в диспетчере задач размер памяти продолжает увеличиваться, но он не удаляет ее. Например, если я печатаю 6000 * 24 раза, то размер файла. exe (память) в диспетчере задач увеличивается до тех пор, пока он не будет зарегистрирован. Есть ли какой-нибудь способ освободить память для boost? использование BOOST_LOG_SEV для ведения журнала. могу ли я каким-либо образом очистить память??
запуск для Windows debug build.... и я использую приведенный ниже код:-
src::severity_logger< severity_level > slg;
    slg.add_attribute("Function", attrs::constant< std::string >(strFuncName));
    slg.add_attribute("FileName", attrs::constant< std::string >(strFileName));
    slg.add_attribute("Line", attrs::constant<int >(lineNo));

    case SEVERITY_LOGINFO:
        BOOST_LOG_SEV(slg, info) << strMessageString;
        break;


Что я уже пробовал:

Попробовал на windows debug build. Но размер не уменьшается, как только ведение журнала прекращается.

Jochen Arndt

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

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

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

Albert Holguin

Вы пробовали смывать? Поверьте, есть также переменная "auto_flush", которую вы можете включить, чтобы потоки сбрасывались каждый раз, когда вы что-то передаете... к вашему сведению, если вы много ведете журнал, эта функция действительно может замедлить работу, поэтому она отключена по умолчанию.

1 Ответов

Рейтинг:
0

KarstenK

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

Иногда диспетчер задач обманывает с первого взгляда. Прочитай здесь как найти утечку памяти. И если вы хотите копнуть глубже вы можете найти здесь какой-нибудь полезный инструмент.

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