要加载到hazelcast地图的50 GB数据。我们的机器中有100 GB的RAM。已配置5 gb -XMX (堆大小)。将数据加载到hazelcast地图时,出现内存不足异常。查看堆转储,数据正在写入堆而不是RAM。如何配置hazelcast将数据写入RAM而不是堆?
发布于 2017-08-17 22:56:02
正如@cragr8806已经提到的,Java堆在您的RAM中。我猜您正在寻找的是堆外实现HDMS (High Density Memory Store,高密度内存存储),这是一个企业特性,在开源版本中不可用。这样,您可以将HDMS可用空间配置为最大值,例如,配置为75 as,并将映射配置为使用in-memory-format作为native。这样,数据将不会存储在GC收集的Java堆中,而是存储在HDMS中。
因为它是一个企业特性,所以您需要一个不同的jar (hazelcast-enterprise.jar)和一个许可证密钥。您可以在我们的公司网站上找到30天试用申请表。
我希望这能澄清情况:)如果您不是在谈论HDMS,请随时详细说明。
发布于 2017-08-21 17:01:12
这是一种正常行为。所有正常的东西都会放入堆中。通过设置-Xmx5,您已经将最大堆大小限制为5G。您将如何将50 5GB转换为5 5GB?
关于堆外实现,我首先会问自己,应用程序是在线(交互式)处理还是离线处理,以及您真正可以容忍的延迟有多大。如果你有一个离线处理,延迟并不重要,在这种情况下,有一个“停止世界事件”将不是一个大问题。
https://stackoverflow.com/questions/45737911
复制相似问题