精易论坛

标题: [纯源码]让易语言程序不再受2G内存限制 [打印本页]

作者: 疯子大大    时间: 2017-4-24 11:11
标题: [纯源码]让易语言程序不再受2G内存限制
本帖最后由 宇智波·佐助 于 2017-4-25 10:33 编辑

现在易语言还不能开发64位程序,所以受32位地址空间限制;一般情况下32位程序最高内存地址是0x7FFFFFFF,能调的内存是2G,也可以通过其他方法达到3G,但3G没有什么用处。


比如我们在开发服务端程序时候,会有很多客户Duan连接,假设每个活跃连接占用1M内存,那2000个连接,服务端内存就会不够用,应用场景还有很多。


有几个地方需要注意的:
1.2G内存已经满足不了你的程序,并且已经试过文件映射,分批处理等方式。
2.了解虚地址空间,了解内存简单读取操作。
3.首先你得有一台大内存服务器,比如64G,128G内存
4.有内存页锁定权限


组策略开启内存页锁定:控制面板->系统和安全->管理工具->本地安全策略->锁定内存页添加当前用户,重启电脑




实现流程:
1.申请一块扩展地址,比如64G大小
2.申请一块虚地址空间,把扩展地址映射到虚地址空间
3.通过虚地址空间进行读写
4.使用完了,释放扩展地址和虚地址空间


我的应用场景:


现在有8673客户Duan在线,假如突发情况下每个客户Duan给我发送1M数据,那需要8.4G内存,那我的程序肯定挂了。


我这是这么处理的:
服务端接收到数据以后,比如数据大于128k时候,就申请扩展地址,投递到完成端口队列中。
完成端口队列取出数据处理,返回给客户Duan。
当有突发情况的时候,就不用丢弃数据,又可以充分利用服务器内存。


地址扩展.zip (7.16 KB, 下载次数: 225)


作者: 孤心y    时间: 2017-4-24 11:46
厉害厉害666
作者: 虚伪的爱    时间: 2017-4-24 12:07
第一了,,,
作者: inmssv    时间: 2017-4-24 13:55
这都能做到!
作者: zaiwulatiao    时间: 2017-4-24 15:56
社会社会.........
作者: y2j423633    时间: 2017-4-24 18:04
厉害啊,这么多机器在线是做啥的
作者: 沁心    时间: 2017-4-24 20:36

作者: xtavoxing    时间: 2017-4-25 02:28
不是很明白....能说说他的使用场景吗???
作者: phantom009    时间: 2017-4-25 09:23
看看,学习!学习!~~还是学习!~~
作者: gongtengbsg    时间: 2017-4-25 22:47
厉害厉害,就想问问这些主机是干嘛的
作者: KEY心碎    时间: 2017-4-27 08:42
我怎么感觉楼主的这个图像是远程控制。。。。
作者: liu2220    时间: 2017-4-27 09:00
看看源码。。。。
作者: 修仙    时间: 2017-4-27 10:07
有点远控的感觉啊!
作者: ckxy2    时间: 2017-5-4 18:46
转载的就标明出处和作者,尊重别人的劳动成果!
作者: 15275791958    时间: 2017-5-7 19:29
感谢楼主分享
作者: aidexinhao    时间: 2017-5-17 11:14
请问这个能做啥用
作者: xxkcy    时间: 2018-11-29 09:45
能申请到内存,但是无法使用,超出整数型范围指针失效
作者: xueyi08    时间: 2018-12-18 21:42
支持开源~!感谢分享
作者: hjdnwx    时间: 2019-3-14 18:04
00000000000000000
作者: hjdnwx    时间: 2019-3-17 19:06
0000000000000000000000000000000
作者: shentong    时间: 2019-4-14 00:30
申请扩展,地址返回0
作者: 379262667    时间: 2019-9-26 20:58
永不了  白费了
作者: zbj824650    时间: 2022-10-28 00:42
3Q好像内存超过64机器不能用对吧,开启PAE:Physical Address Extension会开机失败
作者: 不知名的小周    时间: 2023-4-8 12:10
6




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4