Как решить проблему утечки памяти в 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", которую вы можете включить, чтобы потоки сбрасывались каждый раз, когда вы что-то передаете... к вашему сведению, если вы много ведете журнал, эта функция действительно может замедлить работу, поэтому она отключена по умолчанию.