在Ignite配置中增加HeapSize监控和调整,以及合理设置内存可用性。
具体代码示例如下:
IgniteConfiguration igniteConfig = new IgniteConfiguration();
//设置内存池大小监控的频率 igniteConfig.setMetricsLogFrequency(10 * 1000);
//检查堆内存是否可以通过调整堆外内存大小来增加或者减少内存池 MemoryMetrics baselineMetrics = ignite.metrics().getBaseline();
while (baselineMetrics.getHeapMemoryUsed() > 0.8 * baselineMetrics.getHeapMemoryMaximum()) { //调整堆外内存大小 System.gc();
//重新计算堆外内存大小
baselineMetrics = ignite.metrics().getBaseline();
}
//设置可用内存大小 long maxMemory = Runtime.getRuntime().maxMemory();
//在至少使用50%的内存之前不允许堆外内存的大小调整 long extraMemory = maxMemory - (long) (maxMemory * 0.5);
igniteConfig.setDataStorageConfiguration( new DataStorageConfiguration() .setDefaultDataRegionConfiguration( new DataRegionConfiguration() .setPersistenceEnabled(true) .setMaxSize(maxMemory - extraMemory) .setMetricsEnabled(true) ) .setCheckpointFrequency(60 * 1000) );
//启动Ignite Ignition.start(igniteConfig);