Java:10gb数据库读入数组列表意味着10GB的内存?

时间:2013-10-26 04:27:27

标签: java database memory

如果标题不清楚,请抱歉。

如果我从数据库中将10gb的数据读入List,这是否意味着该应用程序现在正在消耗10GB的内存?或者是否涉及某种类型的优化/压缩?

1 个答案:

答案 0 :(得分:0)

事实上,如果您同时将任何程序中的10GB数据读入其中,则由于对象的开销,将导致使用大于10GB的内存。根据经验,这个放大系数大约是2.4~3倍(即消耗10GB = 24~30GB的内存)。

处理大量内存时,处理一个小块并将其写入输出。这样,您不会一次加载所有10GB,从而节省内存。

如果您的10GB数据库需要响应提交给它的查询。仅在提交查询时获取数据并使用缓存来优化数据库。设置最大结果集大小限制以防止程序运行到OutOfMemoryError。