如果你所用到的数据超过一定数值,这里举例为200M以上时,都要用 临时文件。
VB这个很不好说,就用 C 来说
如果,我一共需要 64K*100000 块的数据,大约是 640M 。
组成一个 双向链表 ,
链表结构:
*上一块地址指针 //双向链表
*下一块地址指针
本块状态
// 在临时文件还是在内存中
临时文件名*
*本块数据指针
// 指向 一个64K内存块
当然,还有一个 指针保存链表的首指针 。
每次创建一个 链时,一个变量 自加 或 删除一个链时,就自减。
当引用一个链时,先判断本块状态,如果是在临时文件中,把么
首先 定义另外一个指针如 *bp ,然后这个 *bp 后退,如,我内存里最多保存 100个链的数据,
就后退 100个链,或者最远调用的链的算法找到一个没有使用的链, 然后把找到的链 写入临时文件,然后修改状态,释放掉内存。
然后 申请内存块,地址给数据指针,打开临时文件,读取数据。修改状态,
这样的话,内存里,保证 100个链,也就是 64M内存,而硬盘上的临时文件 就可以保存 640M 的数据。
--------------------
VB这样用 临时文件,很不现实,因为VB没有指针,无法做 链表。
这个话题,感觉还是放C版好。
--------------------
WIN 系统有一个统一内存管理。它并不是说 你有多大的实体内存就可以定义多大的数组。
数组大小我感觉与 用的编程语言有关,与实体内存大小无直接关系。
软件建议最低多少实体内存,就是告诉你,这个软件一般情况下(流畅运行),要占多少内存。
当你低于规定内存时,WIN系统会频繁调用虚拟内存,导致软件运行 很卡。