易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

让易语言程序不再受2G内存限制   [复制链接]

    2018-11-02 10:52:17
    高级教程源码
    易语言资源网
    9192 次浏览
    来源链接

现在易语言还不能开发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。
当有突发情况的时候,就不用丢弃数据,又可以充分利用服务器内存。



点我下载 (已有 474 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
地址扩展.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
多线程支持库 2.0 5F99C1642A2F4e03850721B4F5D7C3F8
数据结构支持库 2.0 0AFF5F28B2CB42ce906AA27D6E485457


[错误报告]   上一篇: JSON加入复杂成员...     下一篇:客户管理软件