还是接着上次文章的话题,流式数据库读取和批量数据获取中,方式各有千秋,流式数据读取可以很大的解决内存不足问题,而批量读取可以方便数据一次性收集,编码方便。但是流式真的比批量数据读取占有性能场景下的优势吗?这两天我通过Jconsle分析了下两种场景GC和堆内存的消耗。
流式读取方式:
从图中可以看出,Old Gen堆区的内存消耗十分严重,
而程序运行16分钟,GC耗时高达33S,这可以看出流式数据读取采用的策略:时间换空间,减少空间的使用必然带来大量的OldGen的消耗,在高性能程序处理上,这样带来容忍度是相当不行。
批量读取数据: