http://blog.sina.com.cn/s/blog_6d865f3b0102uyry.html[技术宅] VB.NET 判断本程序是32位还是64位,以及获取可用内存 (2014-08-13 02:58:27)转载▼
标签: 物理内存 32位 64位 技术宅
开发客户端的时候,可能有需要判断一下客户端的的情况来确定内存分配策略。现在还有不少老机子用的是32位系统,单进程只能最多分配2GB内存。64位系统就没有这个限制,现阶段基本上只受可用内存的限制了。我的有些算法是可以调节参数来控制内存使用量的(例如分批操作,每批处理得少即可节省内存但多耗时间),为了能智能化地在不知什么情况的客户那里运行,肯定需要编译为AnyCPU(能用64位就用64位运行,在32位系统下用32位运行),那么就需要判别当前程序是运行在64位状态下还是32位状态下了。
网上的办法很多,靠谱的只有一个,居然是最简单的一个。
Dim bit as Integer
bit = System.Runtime.InteropServices.Marshal.SizeOf(IntPtr.Zero)*8
简单吧!
如果程序运行在32位状态(例如在32位系统运行,或者强行编译为x86),则bit=32
如果程序运行在64位状态,则bit=64
下一步是获取可用物理内存的大小。这个比较简单:
Dim availableMemory as Long
availableMemory = My.Computer.Info.AvailablePhysicalMemory
即可获取以字节为单位的可用物理内存。
以上代码在 VB.NET 2010 上实际试验成功,应能用于之后的所有版本。