#ifndef __XIOS_MEM_CHECKER_HPP__ #define __XIOS_MEM_CHECKER_HPP__ #include #include #include #include namespace xios { class CMemChecker { public: CMemChecker(const std::string& name); void suspend(void); void resume(void); void reset(void); std::vector getCumulatedMem(void); static std::vector getMem(void); static std::vector getMemories(void); static void logMem( std::string id, bool finalizeLog = false ); static CMemChecker& get(std::string name); static std::string getAllCumulatedMem(void) ; static void disable(void) { enabled_=false ;} static void enable(void) {enabled_=true ;} static void release(void) {allMemChecker_.clear();} private: static void check(void) ; std::vector cumulatedMem_; std::vector lastMem_; bool suspended_; std::string name_; static std::map allMemChecker_; static CMemChecker dummy_ ; static bool first_ ; static bool enabled_ ; static double vsize_init_; static double rss_init_; static double vmhwm_init_; static double time_init_; static std::ofstream fout_; static int flush_counter_; }; } #endif