Consumo de memória do aplicativo VC ++ não gerenciado no servidor Windows

OK, então eu tenho um aplicativo c ++ não gerenciado multi-threaded muito grande (servidor) que roda em um servidor Windows 2003. Ele hospeda sessões para 20 a 50 usuários simultâneos, executando todo tipo de lógica de negócios ... Às vezes, pode estar usando uma quantidade muito grande de memória devido a coisas como cache de objeto / sessão, devido ao fato de os usuários terem um grande número de janelas abertas nos clientes (cada janela possui uma 'sessão' de servidor separada.

Vemos rotineiramente o consumo de mais de 5-600 MB de memória física e 5-600 MB de memória virtual. Quando chegamos a esse ponto, parece que começamos a ter erros de 'falta de memória'.

Agora, eu sei que o Windows iniciará falhas de página quando achar necessário liberar memória física e também que os aplicativos win32 normalmente só podem alocar até um máximo de 4 GB de memória, na verdade apenas com 2 GB do que disponível para uso real pelo aplicativo para o espaço de endereço 'modo de usuário' e menos ainda depois que outras bibliotecas são carregadas ... Não tenho certeza se o uso de memória do 'modo de usuário' é o relatado no Gerenciador de Tarefas ...

e qualquer maneira, minha verdadeira pergunta é:

Como descobrir a quantidade de memória em modo de usuário que meu aplicativo tem acesso e quanto foi usado em um determinado momento (de preferência fora do aplicativo, ou seja, alguma ferramenta de gerenciamento do Windows

[edit] Depois de examinar o Process Explorer e o site, parece que o valor 'Tamanho virtual' é o valor de quanta memória o aplicativo tem acesso.

questionAnswers(3)

yourAnswerToTheQuestion