Windows server12 系统服务器 16G内存
系统运行后内存占用率逐渐增加,最终增加到15G以上,运行很慢,
但是任务管理器中显示全部进程占用内存只有1G,缓存1G,
系统中安装了1套KING SCADA
kinghistory
RSLINX
没有大型的数据库
是中毒了吗
?
我的服务器和你一样 应该不是这样理解的
你是把内存分给虚拟机了吗
内存1G 缓存1G
1:要获取系统里面有多少内存,使用了多少,例如在服务器编程里面就需要获取这些信息,如果要获取物理内存大小以及一些详细的资料吗,需要使用函数:
GlobalMemoryStatus(),函数:
[cpp] view plain copy
void WINAPI GlobalMemoryStatus(
Out LPMEMORYSTATUS lpBuffer
);
参数:
[cpp] view plain copy
typedef struct _MEMORYSTATUS {
DWORD dwLength;//当前整个结构体的长度,Windows里面很多结构体都会有这个,适用于做半杯匹配。
DWORD dwMemoryLoad;//0~100的一个参数,代表内存正在使用的一个状态,与360看到的那个百分比是一样的,
SIZE_T dwTotalPhys;//当前实际内存的大小,是以字节的方式计算的。
SIZE_T dwAvailPhys;//当前物理内存里面可用内存的大小
SIZE_T dwTotalPageFile;//指内存里面分页的个数,分页个数*页面大小=物理内存总大小
SIZE_T dwAvailPageFile;//可用页面大小
SIZE_T dwTotalVirtual;//总进程的大小
SIZE_T dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;
2:测试代码:
[cpp] view plain copy
#include
#include
#include
int main()
{
setlocale(LC_ALL, "chs");
MEMORYSTATUS memStatus;
GlobalMemoryStatus(&memStatus);
_tprintf(TEXT("内存使用百分比:%d%%\r\n"), memStatus.dwMemoryLoad);
_tprintf(TEXT("内存总大小:%dMB\r\n"), memStatus.dwTotalPhys / 1024 / 1024);//以%d直接打印会超出范围,转换为MB就可以了
_tprintf(TEXT("可用内存大小:%dMB\r\n"), memStatus.dwAvailPhys / 1024 / 1024);
return 0;
}
将会打印出内存的使用情况。
其实是你的杀毒软件和监控程序和显存占用你的内存,你可以关闭杀毒软件和进bois设置试试看吧?我以前就是这样解决的
我之前也有一次这种情况,但是我重启之后就好了,你这种没有细究过,多问度娘吧
:要获取系统里面有多少内存,使用了多少,例如在服务器编程里面就需要获取这些信息,如果要获取物理内存大小以及一些详细的资料吗,需要使用函数:
GlobalMemoryStatus(),函数:
[cpp] view plain copy
void WINAPI GlobalMemoryStatus(
Out LPMEMORYSTATUS lpBuffer
);
参数:
[cpp] view plain copy
typedef struct _MEMORYSTATUS {
DWORD dwLength;//当前整个结构体的长度,Windows里面很多结构体都会有这个,适用于做半杯匹配。
DWORD dwMemoryLoad;//0~100的一个参数,代表内存正在使用的一个状态,与360看到的那个百分比是一样的,
SIZE_T dwTotalPhys;//当前实际内存的大小,是以字节的方式计算的。
SIZE_T dwAvailPhys;//当前物理内存里面可用内存的大小
SIZE_T dwTotalPageFile;//指内存里面分页的个数,分页个数*页面大小=物理内存总大小
SIZE_T dwAvailPageFile;//可用页面大小
SIZE_T dwTotalVirtual;//总进程的大小
SIZE_T dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;
2:测试代码:
[cpp] view plain copy
#include
#include
#include
int main()
{
setlocale(LC_ALL, "chs");
MEMORYSTATUS memStatus;
GlobalMemoryStatus(&memStatus);
_tprintf(TEXT("内存使用百分比:%d%%\r\n"), memStatus.dwMemoryLoad);
_tprintf(TEXT("内存总大小:%dMB\r\n"), memStatus.dwTotalPhys / 1024 / 1024);//以%d直接打印会超出范围,转换为MB就可以了
_tprintf(TEXT("可用内存大小:%dMB\r\n"), memStatus.dwAvailPhys / 1024 / 1024);
return 0;
你试试关了一些后台看看
应该是分配给显卡了吧
你是把内存分给虚拟机了,缓存大