36 using std::set_new_handler ;
38 #include "BESMemoryManager.h" 42 #include "BESMemoryGlobalArea.h" 45 bool BESMemoryManager::_storage_used(
false);
46 new_handler BESMemoryManager::_global_handler;
49 BESMemoryManager::initialize_memory_pool()
57 BESMemoryManager::register_global_pool()
59 _global_handler = set_new_handler( BESMemoryManager::swap_memory ) ;
63 BESMemoryManager::swap_memory()
65 *(BESLog::TheLog()) <<
"BESMemoryManager::This is just a simulation, here we tell BES to go to persistence state" << endl;
66 set_new_handler( BESMemoryManager::release_global_pool ) ;
70 BESMemoryManager::unregister_global_pool()
72 if( check_memory_pool() )
74 set_new_handler( _global_handler ) ;
82 BESMemoryManager::check_memory_pool()
86 BESDEBUG(
"bes",
"BES: global pool is used, trying to get it back..." << endl ) ;
88 if( _memory->reclaim_memory() )
90 _storage_used = false ;
91 BESDEBUG(
"bes",
"OK" << endl ) ;
96 BESDEBUG(
"bes",
"FAILED" << endl ) ;
104 BESMemoryManager::release_global_pool() throw (bad_alloc)
112 BESDEBUG(
"bes",
"BES Warning: low in memory, " <<
"releasing global memory pool!" << endl);
114 *(BESLog::TheLog()) <<
"BES Warning: low in memory, " <<
"releasing global memory pool!" << endl;
120 _storage_used = true ;
121 _memory->release_memory() ;
125 set_new_handler( 0 ) ;