加载中…
正文 字体大小:

[技术宅] 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 上实际试验成功,应能用于之后的所有版本。

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有