//mem 内存信息 import process; namespace sys.mem; class MEMORYSTATUSEX{ INT cbSize; INT memoryLoad; struct totalPhys = { INT size; int sizeHighPart; }; struct availPhys = { INT size; int sizeHighPart; }; struct totalPageFile = { INT size; int sizeHighPart; }; struct availPageFile = { INT size; int sizeHighPart; }; struct totalVirtual = { INT size; int sizeHighPart; }; struct availVirtual = { int size; INT sizeHighPart; }; struct availExtendedVirtual = { INT size; int sizeHighPart; }; } function getInfo(){ //@Deprecated var info = MEMORYSTATUSEX(); info.cbSize = ..raw.sizeof(info); var ok = ::Kernel32.GlobalMemoryStatusEx( info ) ; for(k,v in info){ if( v[["size"]] !== null ){ v.formatSize = ..math.size64(v.size,v.sizeHighPart).format(); } } return info; } function getStatus(){ var info = MEMORYSTATUSEX(); info.cbSize = ..raw.sizeof(info); var ok = ::Kernel32.GlobalMemoryStatusEx( info ) ; var ret = {memoryLoad = info.memoryLoad} for(k,v in info){ if( v[["size"]] !== null ){ var size64 = ..math.size64(v.size,v.sizeHighPart); ret[k+"Formatted"] = size64.format(); ret[k]=tonumber(size64);//上限 8PB } } ret@ = { _tostring = lambda () owner.totalPhysFormatted + "(" + owner.memoryLoad + "%)"; _concat = lambda (b) tostring(owner)++tostring(b); } return ret; } /**intellisense() sys.mem.getStatus() = 返回内存信息。\n返回对象可用 tostring 或连接操作符转换为字符串,格式为:"物理内存大小(使用百分比)"。\n!stdSysMemStatus. !stdSysMemStatus.memoryLoad = 指示当前系统内存的使用百分比,数值。 !stdSysMemStatus.totalPhys = 总的物理内存大小,数值。 !stdSysMemStatus.availPhys = 可用的物理内存大小,数值。 !stdSysMemStatus.totalPageFile = 显示可以存在页面文件中的字节数,数值。 !stdSysMemStatus.availPageFile = 可用的页面文件大小,数值。 !stdSysMemStatus.totalVirtual = 虚拟内存大小,数值。 !stdSysMemStatus.availVirtual = 可用虚拟内存,数值。 !stdSysMemStatus.totalPhysFormatted = 总的物理内存大小,格式化后的字符串(如 "2 GB")。 !stdSysMemStatus.availPhysFormatted = 可用的物理内存大小,数值。 !stdSysMemStatus.totalPageFileFormatted = 显示可以存在页面文件中的字节数,格式化后的字符串(如 "2 GB")。 !stdSysMemStatus.availPageFileFormatted = 可用的页面文件大小,格式化后的字符串(如 "2 GB")。 !stdSysMemStatus.totalVirtualFormatted = 虚拟内存大小,格式化后的字符串(如 "2 GB")。 !stdSysMemStatus.availVirtualFormatted = 可用虚拟内存,格式化后的字符串(如 "2 GB")。 end intellisense**/