使用java在内存中加载2GB [关闭]

Posted

技术标签:

【中文标题】使用java在内存中加载2GB [关闭]【英文标题】:Load 2GB in memory using java [closed] 【发布时间】:2021-09-24 21:01:20 【问题描述】:

我有一个查询,它返回 2GB 的行数。我需要高性能减少数据库中的选择。如何使用 Java 在内存中加载大量数据?

编辑

    使用 hashmap (JAVA 8) 加载数据然后使用,是不是一个解决方案? 使用流 (JAVA 8) 是否支持这种 Lage 数据量?

我有 48GB 内存可用于此进程的内存。 我正在使用 Cassandra 3.11.10、spark 3.0、Java 8。

【问题讨论】:

如果您在编写减少数据的查询时需要帮助,您需要告诉我们更多信息。 您使用的是哪种数据库?获取和处理数据的方式取决于数据库类型。 我正在使用一个 NOSQL 数据库来处理大量数据。我正在使用 spark 并且查询性能非常好。问题是要在BD中一直获取数据,性能很低。一种选择是加载主查询的结果并在内存中进行操作。你有什么想法吗? “如何使用 Java 在内存中加载大量数据?” 您可以找到与您的数据库类型匹配的 Spring Data 变体的文档,然后阅读并学习.按照教程,然后编写一些代码来加载您的实际数据。除了必须完成工作的部分之外,还有哪部分让你感到困扰? 所以您要将一个数据库复制到另一个数据库,重新组织数据以便更快地访问?这被称为Data Warehousing。您可能应该阅读该主题。 【参考方案1】:

XY problem 的一个很好的例子。

根本问题是所有这些数据都在内存中。解决此问题的最佳方法是尝试限制从数据库获得的结果大小。

【讨论】:

我的一个朋友用 Python 做的。所以我认为Java也可以这样做。这不是商业应用。我有 48GB 内存来处理内存中的这些数据。我只需要知道是否有办法像 Python 那样在 Java 中做到这一点。 这真的取决于。 JVM 可以处理 48 GB 的内存,尤其是因为这不是商业应用程序。但是您确实提供的信息太少了。 由于合同项目,我无法提供更多信息。感谢您的努力。

以上是关于使用java在内存中加载2GB [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AS3 中加载图像精灵序列时减少内存使用量

Java 应用程序中加载的类数中可能存在内存泄漏

访问 UIImage 属性而不在内存中加载图像

在 Android 中从内存中加载声音

无法在 Windows 10 中加载 repositories.cfg [关闭]

FFmpeg drawtext - 无法从文件中加载字体[关闭]