Changeset 401 for XIOS


Ignore:
Timestamp:
12/17/12 11:32:12 (11 years ago)
Author:
ymipsl
Message:
  • Implement mechanism for tracking memory leak
  • Correct important memory leaks
  • Add complementary report on memory consumption

YM

Location:
XIOS/trunk/src
Files:
2 added
14 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/array_new.hpp

    r394 r401  
    209209  template <typename T_numtype,int N_rank> inline CMessage& operator<<(CMessage& msg, const CArray<T_numtype, N_rank>& array) 
    210210  { 
    211     msg.push(*array.clone()) ; 
     211    msg.push(array) ; 
    212212    return msg ; 
    213213  } 
     
    215215  template <typename T_numtype,int N_rank> inline CMessage& operator<<(CMessage& msg, CArray<T_numtype, N_rank>& array) 
    216216  { 
    217     msg.push(*array.clone()) ; 
     217    msg.push(array) ; 
    218218    return msg ; 
    219219  } 
  • XIOS/trunk/src/context_client.cpp

    r386 r401  
    1111#include "mpi.hpp" 
    1212#include "timer.hpp" 
     13#include "cxios.hpp" 
    1314 
    1415namespace xios 
     
    206207     } 
    207208     CTimer::get("Blocking time").suspend(); 
     209     report(0)<< " Memory report : Context <"<<context->getId()<<"> : client side : total memory used for buffer "<<buffers.size()*CXios::bufferSize<<" bytes"<<endl ; 
    208210      
    209211     releaseBuffers() ; 
  • XIOS/trunk/src/context_server.cpp

    r382 r401  
    1313#include "tracer.hpp" 
    1414#include "timer.hpp" 
     15#include "cxios.hpp" 
    1516 
    1617 
     
    183184      context->finalize() ; 
    184185      finished=true ; 
     186      report(0)<< " Memory report : Context <"<<context->getId()<<"> : server side : total memory used for buffer "<<buffers.size()*CXios::bufferSize<<" bytes"<<endl ; 
    185187    } 
    186188    else if (event.classId==CContext::GetType()) CContext::dispatchEvent(event) ; 
  • XIOS/trunk/src/cxios.cpp

    r400 r401  
    99#include "memory.hpp" 
    1010#include <new> 
     11#include "memtrack.hpp" 
    1112 
    1213namespace xios 
     
    5354  void CXios::clientFinalize(void) 
    5455  { 
    55      CClient::finalize() ;     
     56     CClient::finalize() ;  
     57#ifdef XIOS_MEMTRACK 
     58     MemTrack::TrackListMemoryUsage() ; 
     59     MemTrack::TrackDumpBlocks();   
     60#endif 
    5661  }    
    5762   
  • XIOS/trunk/src/memory.cpp

    r400 r401  
    99    ERROR("void noMemory(void)",<<"Out of memory") ; 
    1010  } 
    11  
    1211} 
  • XIOS/trunk/src/output/onetcdf4.cpp

    r391 r401  
    169169            retvalue.push_back(size); 
    170170         } 
    171  
     171         delete [] dimid; 
    172172         return (retvalue); 
    173173      } 
  • XIOS/trunk/src/type/enum.hpp

    r394 r401  
    137137  template <typename T> __INLINE__ CBufferOut& operator<<(CBufferOut& buffer, const typename T::t_enum & type) ;   
    138138  template <typename T> __INLINE__ CBufferIn& operator>>(CBufferIn& buffer, CEnum<T>& type) ; 
    139   template <typename T> __INLINE__ CMessage& operator<<(CMessage& msg, const CEnum<T>& type) ; 
     139//  template <typename T> __INLINE__ CMessage& operator<<(CMessage& msg, const CEnum<T>& type) ; 
    140140  template <typename T> __INLINE__ CMessage& operator<<(CMessage& msg, const typename T::t_enum & type) ; 
    141141 
     
    143143  template <typename T> __INLINE__ CBufferOut& operator<<(CBufferOut& buffer, const typename T::t_enum & type); 
    144144  template <typename T> __INLINE__ CBufferIn& operator>>(CBufferIn& buffer, CEnum<T>& type); 
    145   template <typename T> __INLINE__ CMessage& operator<<(CMessage& msg, const CEnum<T>& type); 
     145//  template <typename T> __INLINE__ CMessage& operator<<(CMessage& msg, const CEnum<T>& type); 
    146146  template <typename T> __INLINE__ CMessage& operator<<(CMessage& msg, const typename T::t_enum & type); 
    147147} 
  • XIOS/trunk/src/type/enum_impl.hpp

    r380 r401  
    274274  } 
    275275   
    276   
     276/*  
    277277  template <typename T> 
    278278  CMessage& operator<<(CMessage& msg, const CEnum<T>& type) 
     
    281281    return msg ; 
    282282  } 
     283*/ 
    283284 
    284285  template <typename T> 
  • XIOS/trunk/src/type/enum_ref_impl.hpp

    r378 r401  
    298298 
    299299 
    300  
     300/* 
    301301  template <typename T> 
    302302  CMessage& operator<<(CMessage& msg, const CEnum_ref<T>& type) 
     
    305305    return msg ; 
    306306  } 
    307  
     307*/ 
    308308 
    309309  template <typename T> 
  • XIOS/trunk/src/type/message.cpp

    r369 r401  
    9191    } 
    9292 
    93   CMessage& operator<<(CMessage& msg,CBaseType& type) 
     93  CMessage& operator<<(CMessage& msg,const CBaseType& type) 
    9494 { 
    9595    msg.push(type) ; 
  • XIOS/trunk/src/type/type.hpp

    r394 r401  
    152152  CBufferIn& operator>>(CBufferIn& buffer, T& type) ; 
    153153 
     154/* 
    154155  template <typename T> 
    155156  CMessage& operator<<(CMessage& msg, const CType<T>& type) ; 
     
    157158  template <typename T> 
    158159  CMessage& operator<<(CMessage& msg, const CType_ref<T>& type) ; 
    159    
     160*/   
    160161   
    161162  template <typename T> 
  • XIOS/trunk/src/type/type_decl.cpp

    r369 r401  
    1818  template CBufferIn& operator>> <decl_type> (CBufferIn& buffer, const CType_ref<decl_type>& type) ; \ 
    1919  template CBufferIn& operator>> <decl_type> (CBufferIn& buffer, decl_type& type) ; \ 
    20   template CMessage& operator<< <decl_type> (CMessage& msg, const CType<decl_type>& type) ;\ 
    21   template CMessage& operator<< <decl_type> (CMessage& msg, const CType_ref<decl_type>& type) ; \ 
     20/*  template CMessage& operator<< <decl_type> (CMessage& msg, const CType<decl_type>& type) ;*/ \ 
     21/*  template CMessage& operator<< <decl_type> (CMessage& msg, const CType_ref<decl_type>& type) ;*/ \ 
    2222  template CMessage& operator<< <decl_type> (CMessage& msg, const decl_type& type) ; \ 
    2323  template CMessage& operator<< <decl_type> (CMessage& msg, decl_type& type) ; 
  • XIOS/trunk/src/type/type_impl.hpp

    r369 r401  
    230230  } 
    231231   
    232    
     232/*   
    233233  template <typename T> 
    234234  CMessage& operator<<(CMessage& msg, const CType<T>& type) 
     
    237237    return msg ; 
    238238  } 
    239  
     239*/ 
    240240  template <typename T> 
    241241  CMessage& operator<<(CMessage& msg, const T& type) 
    242242  { 
    243     msg.push(*CType<T>(type).clone()) ; 
     243    msg.push(CType<T>(type)) ; 
    244244    return msg ; 
    245245  } 
  • XIOS/trunk/src/type/type_ref_impl.hpp

    r369 r401  
    236236 
    237237 
    238  
     238/* 
    239239  template <typename T> 
    240240  CMessage& operator<<(CMessage& msg, const CType_ref<T>& type) 
    241241  { 
    242     msg.push(*type.clone()) ; 
     242    msg.push(type) ; 
    243243    return msg ; 
    244244  } 
    245  
     245*/ 
    246246 
    247247  template <typename T> 
    248248  CMessage& operator<<(CMessage& msg, T& type) 
    249249  { 
    250     msg.push(*CType_ref<T>(type).clone()) ; 
     250    msg.push(CType_ref<T>(type)) ; 
    251251    return msg ; 
    252252  } 
Note: See TracChangeset for help on using the changeset viewer.