中国开发网: 论坛: 程序员情感CBD: 贴子 603197
haitao
【算法,技术贴】内存操作直接改为文件流操作,能减少内存的占用量吗?
内存操作直接改为文件流操作,能减少内存的占用量吗?
假设有这样的操作过程:
从输入文件里读入内容到内存字节数组,然后按每32个字节做一个运算,生成35个字节到目的字节数组
然后按base64对目的字节数组做处理(每读入6字节,输出8个字节),输出到最终字节数组
最后,把最终字节数组保存为输出文件。

这样,如果输入文件很大,比如有30M字节,操作过程中所需要内存也要它的2倍多一点,也就是约80M!
如果输入文件2G,就无法处理了。。。。。。。。。


内存操作直接改为文件流操作,用流代替字节数组,不修改操作函数细节,是不是就可以始终只占很小的内存就可以实现这个处理过程了呢?
——无论输入文件多大


感觉好像不行,而是需要彻底重写2个处理过程:
原来是2个独立的处理过程,现在需要改为混合的1个处理过程:
先处理第一个32个字节,得到35个字节,再base64输出(此时可能还有几个字节留着与下次的35个字节连起来再base64);
再处理第二个32个字节,得到35个字节,再base64输出(。。。)
。。。
这样改,肯定可以只占用很小的内存——无论输入文件多大,但是这样的过程混合了2种处理,感觉不舒服,改动也很大。。。。
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录