如果标题不清楚,请抱歉。
如果我从数据库中将10gb的数据读入List,这是否意味着该应用程序现在正在消耗10GB的内存?或者是否涉及某种类型的优化/压缩?
答案 0 :(得分:0)
事实上,如果您同时将任何程序中的10GB数据读入其中,则由于对象的开销,将导致使用大于10GB的内存。根据经验,这个放大系数大约是2.4~3倍(即消耗10GB = 24~30GB的内存)。
处理大量内存时,处理一个小块并将其写入输出。这样,您不会一次加载所有10GB,从而节省内存。
如果您的10GB数据库需要响应提交给它的查询。仅在提交查询时获取数据并使用缓存来优化数据库。设置最大结果集大小限制以防止程序运行到OutOfMemoryError。