X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkMemoryUsage.cxx;h=9cc75d0acce73059b2aba6a083059624e9af66d4;hb=543b72e23ad001ac2a7743b9beacf48e2d0054ac;hp=e2a095dab5e080dae4e058b2517be8233c450a45;hpb=2d26166d21709b8466c060d5453cec24c7be0893;p=clitk.git diff --git a/common/clitkMemoryUsage.cxx b/common/clitkMemoryUsage.cxx index e2a095d..9cc75d0 100644 --- a/common/clitkMemoryUsage.cxx +++ b/common/clitkMemoryUsage.cxx @@ -1,7 +1,7 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + Authors belong to: - University of LYON http://www.universite-lyon.fr/ - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr @@ -23,7 +23,7 @@ # include #endif -void clitk::PrintMemory(bool verbose, std::string s) +void clitk::PrintMemory(bool verbose, std::string s) { #if CLITK_MEMORY_INFO == 1 if (verbose) { @@ -38,21 +38,30 @@ void clitk::PrintMemory(bool verbose, std::string s) #endif } -double clitk::GetMemoryUsageInMb() +double clitk::GetMemoryUsageInMb() { #if CLITK_MEMORY_INFO == 1 //sleep(1); // wait to refresh memory ? need to let the system refresh the mem - int * entries = new int; - sg_process_stats * stat = new sg_process_stats; - int i=0; - stat = sg_get_process_stats(entries); + size_t entries; + sg_process_stats *stat; + int i=0; + sg_init(1); + + stat = sg_get_process_stats(&entries); + if(stat == NULL) + return 0.0; + // Search the current pid in the list of processes - while (stat[i].pid != getpid()) i++; - // Display total memory size - double mem = stat[i].proc_resident/1024/1024; // in Mb + while (stat->pid != getpid() && i < entries) + { + ++i; + ++stat; + } + + // Display total memory size + double mem = stat->proc_resident/1000/1000; // in MB return mem; #else return 0.0; #endif } -