0

抱歉,如果标题不清楚。

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

4

1 回答 1

0

事实上,如果你一次将 10GB 的数据全部读入任何程序,由于对象的开销,将导致使用超过 10GB 的内存。根据经验,这个放大系数约为 2.4 ~ 3 倍(即 10GB = 24 ~ 30GB 的内存消耗)。

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

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

于 2013-10-26T04:41:11.513 回答