问题来源: 我查了很多资料,但是还有一些问题。
首先是我的电脑是i7-6700HQ,cpu最大支持64g。
文章图片
然后是北桥芯片组,支持64g。
文章图片
然后是插槽,有两个ddr4插槽,最大支持频率2133MHZ。
系统是64位系统,windows10。
但是在cmd里,输入wmic memphysical get maxcapacity。
输出33554432,然后/1024/1024=32g,我怀疑这是单槽支持的最大内存。
同样出现问题的情况: 查阅了很多资料和论坛有几位网友也认为是单槽最大内存。
https://superuser.com/questions/973417/command-wmic-memphysical-get-maxcapacity-gives-wrong-number
文章图片
文章图片
还有一个网友输出小于总内存的,链接具体找不到了。
类似的问题:
为什么我maxcapacity出现了两行?
https://bbs.csdn.net/topics/394950415?page=1#post-410924785
获取内存最大容量为8G,用软件测试为最大支持容量为16g
https://bbs.csdn.net/topics/391844619
当然还有不少输出0的网友,是因为识别不出来。
https://docs.microsoft.com/zh-cn/windows/win32/memory/memory-limits-for-windows-releases
在官网给的文档中,以前版本的windows系统有些并不适用。
windows源文件: 根据他从源文件https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-physicalmemoryarray?redirectedfrom=MSDN里找到的。
MaxCapacity
Data type: uint32
Access type: Read-only
Qualifiers: DEPRECATED, MappingStrings (“SMBIOS|Type 16|Maximum Capacity”)
Use the MaxCapacityEx property instead.
This value comes from the Maximum Capacity member of the Physical Memory Array structure in the SMBIOS information.
Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 8, Windows Server 2008 R2, Windows 7, Windows Server 2008 and Windows Vista: Maximum memory size (in bytes) installable for this particular memory array. If the size is unknown, the property is given a value of 0 (zero).
【wmic memphysical get maxcapacity存疑】MaxCapacityEx
Data type: uint64
Access type: Read-only
Qualifiers: MappingStrings (“SMBIOS|Type 16|Extended Maximum Capacity”), Units (“kilobytes”)
Maximum memory size (in bytes) installable for this particular memory array. If the size is unknown, the property is given a value of 0 (zero).
This value comes from the Extended Maximum Capacity member of the Physical Memory Array structure in the SMBIOS information.
源文件说的不是很清楚,尤其是Physical Memory Array structure 到底指的是单个还是总的。
实验给出的一个特殊情况: 最后我找了为自己组机器的朋友做了个实验
文章图片
他的结果是268435456,256g。
书籍资料: 另外我在Windows PowerShell for Administration: The Personal Trainer书中找到了
文章图片
这里指的却是总内存。
总结: 可能这个方法并不是一个合适的方法检测最大物理内存。
要看具体支持多大内存还是要根据主板和系统。(绝大部分情况不考虑cpu,除非特别老的cpu配上很新的主板。intel在官网就可以查到cpu支持的最大内存,amd官网则没有。)
当然aida64软件测得的结果我认为也比命令行可靠。