12#ifndef ARCANE_UTILS_MEMORYINFO_H
13#define ARCANE_UTILS_MEMORYINFO_H
17#include "arcane/utils/IMemoryInfo.h"
18#include "arcane/utils/TraceInfo.h"
54 virtual void addInfo(
const void* owner,
const void* ptr,Int64 size);
56 virtual void addInfo(
const void* owner,
const void* ptr,Int64 size,
const void* old_ptr);
58 virtual void removeInfo(
const void* owner,
const void* ptr,
bool can_fail);
60 virtual void changeOwner(
const void* new_owner,
const void* ptr);
62 virtual void printInfos(std::ostream& ostr);
65 { m_iteration = iteration; }
66 virtual void printAllocatedMemory(std::ostream& ostr,Integer iteration);
71 virtual void beginCollect();
72 virtual void endCollect();
73 virtual bool isCollecting()
const;
85 virtual Int64 nbAllocation()
const {
return m_alloc_id; }
89 void checkMemory(
const void* owner,Int64 size);
93 typedef std::map<const void*,MemoryInfoChunk> MemoryInfoMap;
94 typedef std::map<const void*,TraceInfo> MemoryTraceInfoMap;
96 MemoryInfoMap m_infos;
97 MemoryTraceInfoMap m_owner_infos;
100 Int64 m_max_allocated;
101 Int64 m_current_allocated;
102 Int64 m_biggest_allocated;
103 Int64 m_info_big_alloc;
104 Int64 m_info_biggest_minimal;
105 Int64 m_info_peak_minimal;
108 bool m_display_max_alloc;
110 bool m_is_first_collect;
111 bool m_is_stack_trace_active;
115 void _removeOwner(
const void* owner);
116 void _addMemory(
const void* owner,Int64 size,
const String& stack_value);
117 void _removeMemory(
const void* owner,Int64 size);
118 TraceInfo* _getTraceInfo(
const void* owner);
119 void _printInfos(std::ostream& ostr);
125extern "C++" ARCANE_UTILS_EXPORT MemoryInfo*
126arcaneGlobalTrueMemoryInfo();
127extern "C++" ARCANE_UTILS_EXPORT
void
128arcaneInitCheckMemory();
129extern "C++" ARCANE_UTILS_EXPORT
void
130arcaneExitCheckMemory();
virtual void removeOwner(const void *owner)=0
Supprime la référence sur owner.
virtual void createOwner(const void *owner, const TraceInfo &trace_info)=0
Crée une référence sur owner avec les infos de trace trace_info.
virtual void setTraceMng(ITraceMng *msg)=0
Positionne le ITraceMng pour les messages.
virtual void visitAllocatedBlocks(IFunctorWithArgumentT< const MemoryInfoChunk & > *functor) const =0
Visiteur sur l'ensemble des blocs alloués.
virtual void setOwner(const void *owner, const TraceInfo &new_info)=0
Modifie les infos de la référence owner.
virtual Int64 stackTraceMinAllocSize() const
Taille minimale des allocations dont on trace la pile d'appel.
virtual bool keepStackTrace() const
Indique si la sauvegarde de la pile d'appel est activée.
virtual void setStackTraceMinAllocSize(Int64 alloc_size)
Positionne la taille minimale des allocations dont on trace la pile d'appel.
virtual void setIteration(Integer iteration)
Positionne le numéro de l'itération courante.
virtual void setKeepStackTrace(bool is_active)
Indique si on active la sauvegarde de la pile d'appel.
Interface d'un fonctor avec argument mais sans valeur de retour.
Interface du gestionnaire de traces.