haitao:
【算法,技术贴】内存操作直接改为文件流操作,能减少内存的占用量吗?
[阅读: 527] 2008-02-02 08:07:40
内存操作直接改为文件流操作,能减少内存的占用量吗?
假设有这样的操作过程:
从输入文件里读入内容到内存字节数组,然后按每32个字节做一个运算,生成35个字节到目的字节数组
然后按base64对目的字节数组做处理(每读入6字节,输出8个字节),输出到最终字节数组
最后,把最终字节数组保存为输出文件。
这样,如果输入文件很大,比如有30M字节,操作过程中所需要内存也要它的2倍多一点,也就是约80M!
如果输入文件2G,就无法处理了。。。。。。。。。
内存操作直接改为文件流操作,用流代替字节数组,不修改操作函数细节,是不是就可以始终只占很小的内存就可以实现这个处理过程了呢?
——无论输入文件多大
感觉好像不行,而是需要彻底重写2个处理过程:
原来是2个独立的处理过程,现在需要改为混合的1个处理过程:
先处理第一个32个字节,得到35个字节,再base64输出(此时可能还有几个字节留着与下次的35个字节连起来再base64);
再处理第二个32个字节,得到35个字节,再base64输出(。。。)
。。。
这样改,肯定可以只占用很小的内存——无论输入文件多大,但是这样的过程混合了2种处理,感觉不舒服,改动也很大。。。。