关于读取大文本文件,超出内存的问题

请教各位大虾一个问题

我现在的一个项目,要求定期从一批目录中读取文本数据,由于文件都比较大,有的超过几十兆,其中每一行数据是用“,”为分隔符的一条记录,我每读取一行就要做验证(数据有效性),然后如果数据错误则写入log文件,如果没有错我就把所有记录写入内存的ArrayList中,由于每个数据文件大,且目录也多,循环读取一遍所有目录下的所有文件时,我如果用 -Xmx512M 来运行,很长时间都没结果,如果不是,则会OutOfMemoryError,不知道各位有什么好的解决办法?
另外由于是要满足一定时间的定期操作(暂定为2分钟进行一次),如何控制比较好,希望有经验的大虾指教,谢谢!

难道每次都要重新读一遍数据文件么?不可以每次读最新的数据?

就是读一遍,但还没有把目录下的文件读完,就已经超出内存了

你的用户是否要一次处理这么多数据?

有一个疑问?为什么不将读过的数据隔一定时间就存到别处,而要一直放在内存中?还有什么用吗?

建议看一下log4j的io处理机制,处理的相当好。

问题的解决方法本身就有问题。