我在读java压缩oops。我看到java所做的是将压缩指针用于所有的对象引用。
我能理解的是,对于大量的物体 -XX:+UseCompressedOops
至 -XX:-UseCompressedOops
,可能会占用更多的内存。
假设你有一百万个对象,在第一种情况下,你需要4mb的数据作为参考,在第二种情况下,你需要8mb。
现在,我有一台64gb内存的电脑,我想用50gb的内存给Cassandra。但现在我想知道,额外的18gb是否真的有用,还是会被许多无用的指针数据填满。
所以我的问题是:
Cassandra是管理大量的小对象,还是只管理少数几个大对象(i、 e.它是否为每个单元格、每行、每个表分配一个单独的缓冲区?)
在第一种情况下,当超过32gbcassandra缓存与50gbcassandra缓存时,我们可能得不到多少好处。
1条答案
按热度按时间oo7oh9g91#
从堆的Angular 来看,我的一个集群节点是这样的:
堆上有25.759.325个示例,此节点以
-Xms7967M -Xmx7967M -Xmn800M
-所以这里有很多例子。有关调整资源,请参阅:https://docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/operations/opstunejvm.html
在我的一个测试中,我在一台主机上运行了4个cassandra示例,每个主机有8gb的堆(在一台内存为64gbram的机器上,为os页面缓存留有32gb的空间,每个主机都有机架感知,以确保在主机停机时不会丢失多个副本)。