内存使用情况

#pragma once


class SetSize_Timer: public ITimerSink
{
public:
	SetSize_Timer(long _delay_time, long _interval_time);
	virtual ~SetSize_Timer();
	// 定时器回调
	virtual void on_time(long _user_sign);
};

#include "stdafx.h"
#include "App_Server.h"
#include "SetSize_Timer.h"
#include "..//Game_Module//Time_Axis.h"
#include "..//Game_Server_killerDlg.h"
#include <psapi.h>   
#pragma comment(lib,"psapi.lib") 


SetSize_Timer::SetSize_Timer(long _delay_time, long _interval_time)
{ 
	App_Server::get_time_axis()->set_time_tgr(this, 1, _delay_time, _interval_time); 
	App_Server::get_delete_proxy()->push_single( this );
}
SetSize_Timer::~SetSize_Timer()
{ 
	App_Server::get_delete_proxy()->pop( this );
	App_Server::get_time_axis()->kill_time_tgr(this, 1); 
}
// 定时器回调
void SetSize_Timer::on_time(long _user_sign)
{
	static long  time_count = 1;
	static DWORD sum_WorkingSetSize = 0;
	static DWORD sum_PeakWorkingSetSize = 0;
	static DWORD old_WorkingSetSize = 0;
	static DWORD old_PeakWorkingSetSize = 0;

	TCHAR num[64];
	CString text = _T("");
	_ltow(time_count, num, 10);
	text += num;
	text += '\n';

	PROCESS_MEMORY_COUNTERS pmc;
	HANDLE handle = GetCurrentProcess();  
	GetProcessMemoryInfo(handle,&pmc,sizeof(pmc));  
	DWORD cur_WorkingSetSize = pmc.WorkingSetSize/1024;
	_ltow(cur_WorkingSetSize, num, 10);
	text += "内存使用: ";
	text += num;
	text += "K\n";

	DWORD cur_PeakWorkingSetSize = pmc.PeakWorkingSetSize/1024;
	_ltow(cur_PeakWorkingSetSize, num, 10);
	text += "峰值内存: ";
	text += num;
	text += "K\n";

	if( old_WorkingSetSize != cur_WorkingSetSize || old_PeakWorkingSetSize != cur_PeakWorkingSetSize) 
	{
		++time_count;
		long dt_WorkingSetSize = cur_WorkingSetSize - old_WorkingSetSize;
		_ltow(dt_WorkingSetSize, num, 10);
		if( dt_WorkingSetSize >= 0)
			text += "+ 内存使用较上一次增长量: ";
		else
			text += "- 内存使用较上一次增长量: ";
		text += num;
		text += "K\n";

		long dt_PeakWorkingSetSize = cur_PeakWorkingSetSize - old_PeakWorkingSetSize;
		_ltow(dt_PeakWorkingSetSize, num, 10);
		if( dt_PeakWorkingSetSize >= 0)
			text += "+ 峰值内存较上一次增长量: ";
		else
			text += "- 峰值内存较上一次增长量: ";
		text += num;
		text += "K\n";

		sum_WorkingSetSize = sum_WorkingSetSize + dt_WorkingSetSize;
		_ltow(sum_WorkingSetSize, num, 10);
		text += "内存使用总增长: ";
		text += num;
		text += "K\n";

		sum_PeakWorkingSetSize = sum_PeakWorkingSetSize + dt_PeakWorkingSetSize;
		_ltow(sum_PeakWorkingSetSize, num, 10);
		text += "峰值内存总增长: ";
		text += num;
		text += "K\n";

		old_WorkingSetSize = cur_WorkingSetSize;
		old_PeakWorkingSetSize = cur_PeakWorkingSetSize;
		App_Server::get_log_trace()->print(Module_Name::Set_Size, text.GetBuffer());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值