我将Hazelcast用作我的API(例如MemTable)中的嵌入式分布式地图,以在将其发送到另一个存储之前积累条目。我的问题是:
我可以使用为IMap提供的LocalMapStats对象控制堆大小吗?
我正在阅读有关该对象的信息,尽管我可以通过诸如getHeapSize()或getOwnedEntryMemoryCost()以及getBackupEntryMemoryCost()之类的方法来获得与阈值进行比较的内存成本,然后再决定如何处理数据。
谢谢。
答案 0 :(得分:0)
您可以通过API识别地图的堆成本。也可以通过Hazelcast管理中心门户中的脚本控制台轻松完成此操作。代码如下
function findOverallDataSizeImap() {
var objs = hazelcast.getDistributedObjects();
var len = objs.length;
var output='';
var totalSizeInMB=0.0;
for(var i=0;i<len;i++){
if(objs[i] instanceof com.hazelcast.core.IMap){
output = output+' Name : '+objs[i].getName() +' Size (MB) :'+
(objs[i].getLocalMapStats().getHeapCost()/100000)+' \n';
totalSizeInMB=totalSizeInMB+(objs[i].getLocalMapStats().getHeapCost()/100000);
}
}
output = output + ' Total Size (MB) = ' + totalSizeInMB;
return output;
}