Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
抱歉,如果标题不清楚。
如果我将 10gb 的数据从数据库读取到列表中,这是否意味着应用程序现在正在消耗 10gb 的内存?或者是否涉及某种类型的优化/压缩?
事实上,如果你一次将 10GB 的数据全部读入任何程序,由于对象的开销,将导致使用超过 10GB 的内存。根据经验,这个放大系数约为 2.4 ~ 3 倍(即 10GB = 24 ~ 30GB 的内存消耗)。
在处理大量内存时,处理一个小块并将其写入您的输出。这样,您不会一次加载所有 10GB,从而节省内存。
如果您的 10GB 数据库需要响应提交给它的查询。仅在提交查询时获取数据并使用缓存来优化数据库。施加最大结果集大小限制,以防止您的程序遇到 OutOfMemoryError。