Хост ОС является Windows 10, с 16BG RAM. У меня есть Oracle VirtualBox с Ubuntu 18.04 как гость ОС (ПОРШЕНЬ на 2 ГБ).
Я запустил следующую программу на госте ОС. Я видел, что вершина перечислила до 40 ГБ. Но, я не видел Использование оперативной памяти выхода за пределы VirtualBox 230 МБ.
Как я могу видеть счетчики хорошей памяти на госте и хосте?
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <malloc.h>
static size_t total = 0, n = 0;
static char* ptrs[20000] = {0};
static size_t ncur = 0;
static void alloc_more(int more)
{
char* tmp = (char*)malloc(more);
tmp[more/2] = 32;
tmp[more-1] = 41;
tmp[0] = 53;
total += more;
printf("\n allocated total is %lu GB for %p", total/(1024*1024*1024),tmp);
ptrs[++n] = tmp;
ncur = (n*3)/4;
if(ptrs[ncur])
{ memset((void*)ptrs[ncur], 33, more);
}
}
int main(int argc, char* argv[])
{
while(1)
{
alloc_more(atoi(argv[1]));
}
return 0;
}
При выделении памяти она просто резервируется. Необходимо поместить что-то в него, прежде чем это на самом деле привыкнет. Если Вы помещаете что-то в него, то необходимо наблюдать увеличение Использования оперативной памяти VM. Можно хотеть замедлить вещи с некоторыми снами в программе, чтобы дать себе время для наблюдения вещей, в то время как она продолжается.
Был интересный вопрос об использовании всей памяти, доступной просто на днях.