最近在做处理海量数据,发现一个软件很神奇的地方,一直想不明白
问题如下:
原始数据记录是二进制格式的,且有100m的大小(转换为ASCII码形式有600m),用此软件查看所有二进制数据,画出数据随时间变化的曲线,密密麻麻的全部显示了出来,但是通过任务管理器查看电脑使用的内存,即PF使用率,发现和打开软件前的PF使用率一点也没有变化这是怎么回事???
明明100m的二进制数据全部画出来,而且确实一点问题也没有,画的图很准确,但是PF使用率就是不变而且我同时查看了5个100m的二进制数据,PF使用率比没有打开软件时,多了1m
怎么可能呢???我暂时的想法是,软件读取数据后,是不是程序直接释放掉了数据的内存,只保留了曲线的图像,因为一张普通jpg图片也就10k大小而已请问是这样吗?

解决方案 »

  1.   

    读取海量数据,并且使得内存占用不大,通常有两种办法:
    一、读一个处理一个。自始至终,只用一个数据。以int为例,始终只占用4个Bytes。
    二、软件自己开辟一个虚拟内存,对于暂时不用的数据放在虚拟内存上。这个比Windows的虚拟内存效率要高许多。
      

  2.   


    首先谢谢vcf_reader
    方法一有个问题,就是效率太低了,有几千万个数据,一个一个读速度实在是太慢
    方法二很吸引人,我再查询下虚拟内存的资料