sm_dump_handles now shows memory usage

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401772
This commit is contained in:
David Anderson
2007-12-05 18:07:18 +00:00
parent 41ac66fceb
commit 5ae2a5c4fe
31 changed files with 330 additions and 6 deletions
+23
View File
@@ -87,6 +87,29 @@ TopMenu::~TopMenu()
delete [] m_clients;
}
unsigned int TopMenu::CalcMemUsage()
{
unsigned int size = sizeof(TopMenu);
size += m_Config.strings.GetMemTable()->MemUsage();
size += (m_Config.cats.size() * sizeof(int));
size += (sizeof(topmenu_player_t) * m_max_clients);
size += (m_SortedCats.size() * sizeof(unsigned int));
size += (m_UnsortedCats.size() * sizeof(unsigned int));
size += (m_Categories.size() * (sizeof(topmenu_category_t *) + sizeof(topmenu_category_t)));
size += (m_Objects.size() * (sizeof(topmenu_object_t *) + sizeof(topmenu_object_t)));
size += m_ObjLookup.mem_usage();
for (size_t i = 0; i < m_Categories.size(); i++)
{
size += m_Categories[i]->obj_list.size() * sizeof(topmenu_object_t *);
size += m_Categories[i]->sorted.size() * sizeof(topmenu_object_t *);
size += m_Categories[i]->unsorted.size() * sizeof(topmenu_object_t *);
}
return size;
}
void TopMenu::OnClientConnected(int client)
{
if (m_clients == NULL)
+2
View File
@@ -146,6 +146,8 @@ public: //ITextListener_SMC
SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
SMCResult ReadSMC_LeavingSection(const SMCStates *states);
public:
unsigned int CalcMemUsage();
private:
void SortCategoriesIfNeeded();
void SortCategoryIfNeeded(unsigned int category);
+4
View File
@@ -58,6 +58,10 @@ public:
*/
void Reset();
inline unsigned int MemUsage()
{
return size;
}
private:
unsigned char *membase;
+5
View File
@@ -43,6 +43,11 @@ public:
ITopMenu *pTopMenu = (ITopMenu *)object;
g_TopMenus.DestroyTopMenu(pTopMenu);
}
bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
{
*pSize = ((TopMenu *)object)->CalcMemUsage();
return true;
}
} s_TopMenuHandle;
void Initialize_Natives()