可否用多进程(线程)向内存导入数据
我这里有2G左右的数据(10亿条记录),要进行大量复杂的统计计算。我采用的方法是一次性尽可能多的将数据导入内存,减少磁盘的读写,否则计算时间将是不可忍受的:
1.采用VS2005的IDE
2.C++建立链表,每一个链表元素标识一个记录
3.将硬盘上的文件读入内存的链表中(方便内存中计算时数据的检索)
我的机器内存1.25G,但当我的程序运行时,内存分配到620M左右的时候,系统就报错(“tigger a breakpoint”)。看来我想把数据都导入内存计算是行不通了。我怀疑错误的原因是在堆上分配太多内存而又不释放(其实我在程序最后写了释放的,但是释放的前提是数据全部进入内存,且计算完毕,现在数据还没全进去就报错了)。
我想问的是:
1.我的内存显然还有余力去接纳更多的数据(1.25G),但是在620兆就报错是不是因为windows对于单个进程的堆资源有上限?
2.如果我采用多进程或多线程(一个进程负责分配堆内存,一个进程负责计算,再一个进程负责将完成计算的元素所占用的资源释放)效果会不会好一点呢?
谢谢各位!