近来做维护工作,BOSS叫我们查日志然后记录几个地点的相差时间延迟,现在大概框架做出来了但是有个功能卡住了就是我用IO流BufferedReader 的readLine方法去读日志每一行然后放进Map里面  因为有时候我要定位到某一行倒退下几行查找,但是当日志超过50W行的事后Map就爆了引起java.lang.OutOfMemoryError: Java heap space错误 ,请问我想用IO流读文本然后定位到某一行 再倒退查找除了用Map(ID,行的内容);这样记录还有什么好的办法吗?求教了,要不天天对这鬼东西想吐了

解决方案 »

  1.   

    实在不行的话,就自己写个Read类,每次读取readLine后,记录该行在文件中的位置,这样在Map中只要存储这个位置就可以了。要用到这一行的时候,只要从这个位置读取一行数据就可以了。
      

  2.   

    用窗口来分析?
    一次搞上一部分不会outofmemory的行进行分析
    或者改进程序行为
    涉及到具体业务
    没法整了