【C#】关于C#编译的X86程序求解
这几天在网上看到了一些关于C#程序编译的时候选择AnyCpu、X86、X64的编译方式,对程序的可用内存大小不同的文章,有几个疑问- X86程序,不管系统内存有多少,对程序而言,可用的内存只有4GB,操作系统还要预留2GB,实际程序可用的只有2GB吗?
-如果用户的电脑内存是64位的,但是内存只有4GB,对于操作系统而言,可用的内存可能只有3GB多一点,可能更少,那程序是不是就很容易发生OUT OF MEMORY的异常了
后面看到文章里面也有可以用`editbin`来让X86的程序可用内存超过2GB的方法,但是这样是不是程序还是不能拥有系统的全部内存?
我们公司有一个比较老的软件,应该是.netframework3.5开发的,开发的时间应该是2004年,最终在2013年就没更新了,软件会用到TWAIN协议来操作扫描仪扫描的
想问一下,如果在有源代码的情况下,就算升级到最新的.netframework4.x 编译成X64版本的,就目前的扫描仪驱动来说,是不是也没办法被64位程序使用?比如佳能的DR-G1100、DR-G7550C、DR-G2090、DR-G2090S、DR-M160 II、DR-M260这些扫描仪是不是都没有纯64位的驱动?
还请大佬解答,万分感激 本帖最后由 低调(d-iao) 于 2023-4-10 17:14 编辑
1. 在32系统最大可用内存是4gb 预留2gb 实际使用最多也就2gb
但如果是64说系统即使只有4gb 程序也能够调用更多内存空间。
2.对于64位系统 x86程序并不像x64程序那样可以更好的分配系统资源 减少内存不足,所以在条件允许下 建议使用64位编译。
3.editbin也许能改善x86内存不足的情况,但同时也可能会影响程序的稳定性,所以还是那句话 如果条件允许 还是建议使用64编译,没办法之下可以试试editbin。
4.必须扫描仪驱动支持64位才可以,老的大部分驱动并不支持64位系统 即使升级了程序也可能无法支持64位程序。
建议下次如果同时多问题提问,可以加上问题编号 这样也方便我们逐一的进行解答 不然还得从问题里来回找出你提出了多少个问题。
顺便问一句 为何你们公司不重购一台新款式? 计划书走起 你搞错概念了。R3是R0的区别。驱动是R0的所以64位系统就肯定是64位驱动。R3可以32也可以64.R3的应用程序是有接口跟驱动通讯的。 如果扫描仪驱动没有64位的话,那么程序64位与否也无关系了,而且程序和驱动之间通过系统接口调用,程序多少位不影响调用驱动的 1.的确如此,系统会用掉1G多内存,给程序就2G左右了。可以通过LargeAddressAware选项,开启大内存,但不一定能解决内存不足。
2.就算给电脑加8G内存,也不能解决OUT OF MEMORY的异常啊,各种原因都有。现在找超过8G电脑太容易了吧,想测试就行了吧。 Light紫星 发表于 2023-4-10 15:52
如果扫描仪驱动没有64位的话,那么程序64位与否也无关系了,而且程序和驱动之间通过系统接口调用,程序多少 ...
这个是x86编译出来获取到的扫描仪列表
这个是X64编译出来获取到的扫描仪列表,现在感觉尬住了
wincao 发表于 2023-4-10 15:55
1.的确如此,系统会用掉1G多内存,给程序就2G左右了。可以通过LargeAddressAware选项,开启大内存,但不一 ...
基本等于无解了吧,软件倒是也能用,就是用户的内存就算很大,读入的图片一多,软件内存占用超过2gb就gg了 jidesheng6 发表于 2023-4-10 15:56
这个是x86编译出来获取到的扫描仪列表
我之前遇到过一种语音合成引擎,x86和x64编译获取到的列表不一样的情况,你这个可能也是类似的原因,要看你获取扫描仪的接口调用的什么,有些可能是调用dll实现的,可能获取到的就不太一样,你看看能不能通过系统调用获取到这个列表 jidesheng6 发表于 2023-4-10 15:58
基本等于无解了吧,软件倒是也能用,就是用户的内存就算很大,读入的图片一多,软件内存占用超过2gb就gg ...
感觉只能从软件层面去优化代码了,图片原生加载的话好像一张图都几十上百M的内存的 低调(d-iao) 发表于 2023-4-10 15:36
1. 在32系统最大可用内存是4gb 预留2gb 实际使用最多也就2gb
但如果是64说系统即使只有4gb 程序也能够调用 ...
佳能以前的开发组走了,1100算是用过比较好的机器了,新的2090 2090s其实就是1100套壳,然后改了下吃纸深度,1100一次性可以放500张,新的2090只能放200多,我都不知道怎么说了,而且2090的驱动还特别离谱,在twain调用的时候,如果出现了双张进入或者卡纸,会直接把我们程序那块事件挂住,软件直接进入死循环了,但是1100系列的驱动就没事,包括260的驱动也是和2090一样的问题,260的驱动还会经常报-27错误,国外去搜了,很多人都有这种问题,我们都不太喜欢新机器,心里没底,用着难受
页:
[1]
2