Salome HOME
Bug with FindClosestTupleIdAlg fixed (preventing the threshold to be null)
[tools/medcoupling.git] / src / MEDCoupling / MEDCouplingRefCountObject.cxx
index 394f4308f7fa8d60097c58b4b7bdc8ea425cb4dc..a0c28d56134e6cd9cb0c5f33c1b2db4eddde3a77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -88,6 +88,35 @@ bool MEDCoupling::IsCXX11Compiled()
 
 //=
 
+std::string BigMemoryObject::debugHeapMemorySize() const
+{
+  std::size_t ret(getHeapMemorySizeWithoutChildren()),sum(ret);
+  std::ostringstream oss;
+  std::vector<const BigMemoryObject *> s2(getDirectChildren());
+  std::set<const BigMemoryObject *> s1;
+  oss << "this (" << this->getClassName() << ") -> " << ret << std::endl;
+  while(!s2.empty())
+    {
+      std::vector<const BigMemoryObject *> s3;
+      for(auto it : s2)
+        {
+          if(s1.find(it)==s1.end())
+            {
+             ret = it->getHeapMemorySizeWithoutChildren(); sum+=ret;
+              oss << it->getClassName() << " -> " <<  ret << std::endl;
+              s1.insert(it);
+              std::vector<const BigMemoryObject *> v2(it->getDirectChildren());
+              for(auto it2 : v2)
+                if(s1.find(it2)==s1.end())
+                  s3.push_back(it2);
+            }
+        }
+      s2=s3;
+    }
+  oss << "sum = " << sum << std::endl;
+  return oss.str();
+}
+
 std::size_t BigMemoryObject::getHeapMemorySize() const
 {
   std::size_t ret(getHeapMemorySizeWithoutChildren());