这篇文章可能是OpenHFT常见问题的一个很好的候选人。OpenHFT ChronicleMap内存的限制和限制
我在玩ChronicleMap考虑它的想法,但有很多问题。我相信大多数正在研究此产品的初级程序员都有类似的考虑。
你能解释一下这个API如何管理内存吗?
ChronicleMap宣布了一些显着的TBs堆外存储器资源可用于处理其数据,我想清楚的看到这一点。
让我们来找一个带有500GB HD和4GB RAM的笔记本电脑的程序员。在这种情况下,纯数学赛车 - 可用“交换”内存的总资源为504GB。让我们给OS和其他程序一半,我们剩下250GB高清和2GB内存。你能否详细说明实际可用的内存ChronicleMap可以根据可用资源分配数量?
下一个相关的问题是关于ChronicleMap的实现。
我的理解是,每个ChronicleMap都会分配它所处理的内存块,并在我们能够准确预测通过的数据量时实现最佳的性能/内存使用率。但是,这是一个充满活力的世界。
让我们设置(夸张但是可能)例如:
假设地图一个K(密钥)“城市”和它们的V(值) - “描述”(城市的)和允许用户大范围描述长度。
第一用户输入:K = "Amsterdam"
,V = "City of bicycles"
和该条目用于声明地图 - 它为所述一对这样的先例:
ChronicleMap<Integer, PostalCodeRange> cityPostalCodes = ChronicleMap
.of(CharSequence.class, CharSequence.class)
.averageKey("Amsterdam")
.averageValue("City of bicycles")
.entries(5_000)
.createOrRecoverPersistedTo(citiesAndDescriptions);
现在,下一个用户被运走,并写入的测定关于布拉格 他传递到:K = "Prague"
,V = "City of 100 towers is located in the hard of Europe ... blah, blah... million words ..."
现在的程序员曾预计最大5_000条目,但它得到了他的手,并有好几千个条目。
ChronicleMap会自动为这种情况分配内存吗?如果是,是否有更好的方法来为这个动态解决方案声明ChronicleMaps?如果不是,你会推荐一种方法(最好在代码示例中)如何最好地处理这种情况?
这是如何与持久性文件工作?
Can ChronicleMaps会耗尽我的RAM和/或磁盘空间吗?避免这种情况的最佳做法?
换句话说,请解释如何在低估和高估值(和/或密钥)长度和条目数量的情况下管理内存。
以下哪些适用于ChronicleMap?
- 如果我分配大块(
.entries(1_000_000)
,.averageValueSize(1_000_000)
和实际使用情况是 - 项= 100,和平均值大小= 100。
,会发生什么?:
1.1。 - 一切正常,但会有大量浪费的块 - 未使用?
1.2。 - 一切工作正常,未使用的内存可用于:
1.2.1 - ChronicleMap
1.2.2 - 给出了使用ChronicleMap
1.2.3线程 - 给定的过程
1.2.4 - 给定JVM
1.2.5 - 操作系统
1.3。 - 请解释一下未使用的内存是否会发生其他问题
1.4。 - 超大小的声明对我的持久性文件做了什么?
- 相反的情况下的1 - I分配小块(
.entries(10)
,.averageValueSize(10)
和实际使用是条目1_000_000s,和平均值大小=字节1_000s 会发生什么情况?: 。
你好。请记住,我们的社区由不同性别的人组成,如果您将他们称为“先生们”,有些人可能会感到被排除在外。无论如何,我们宁愿帖子不要包含任何称呼。谢谢! – halfer