Exception 'No off-heap memory has been configured' while starting Gemfire servers
search cancel

Exception 'No off-heap memory has been configured' while starting Gemfire servers

book

Article ID: 413933

calendar_today

Updated On:

Products

VMware Tanzu Data Services VMware Tanzu Gemfire VMware Tanzu Greenplum / Gemfire

Issue/Introduction

When --off-heap-memory-size is set to zero, GemFire throws the following exception at startup, even if --off-heap=true is removed from the cache.xml or region configuration:

Exception in thread "main" com.vmware.gemfire.deployment.modules.internal.LauncherException: java.lang.IllegalStateException: No off-heap memory has been configured.
    at gemfire//com.vmware.gemfire.deployment.modules.internal.Launcher.launch(Launcher.java:90)
    at gemfire//com.vmware.gemfire.deployment.modules.internal.Launcher.main(Launcher.java:103)
    at org.jboss.modules.Module.run(Module.java:353)
    at org.jboss.modules.Module.run(Module.java:321)
    at org.jboss.modules.Main.main(Main.java:604)
    at com.vmware.gemfire.bootstrap.internal.Launcher.launch(Launcher.java:64)
    at com.vmware.gemfire.bootstrap.ServerLauncher.main(ServerLauncher.java:31)
Caused by: java.lang.IllegalStateException: No off-heap memory has been configured.
    at gemfire//org.apache.geode.internal.cache.control.OffHeapMemoryMonitor.setCriticalThreshold(OffHeapMemoryMonitor.java:200)
    at gemfire//org.apache.geode.internal.cache.control.InternalResourceManager.setCriticalOffHeapPercentage(InternalResourceManager.java:545)
    at gemfire//org.apache.geode.internal.cache.xmlcache.ResourceManagerCreation.configure(ResourceManagerCreation.java:161)
    at gemfire//org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:548)
    at gemfire//org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:492)
    at gemfire//org.apache.geode.internal.cache.xmlcache.CacheXmlParser.create(CacheXmlParser.java:344)
    at gemfire//org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4346)
    at gemfire//org.apache.geode.internal.cache.GemFireCacheImpl.initializeDeclarativeCache(GemFireCacheImpl.java:1689)
    at gemfire//org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1476)
    at gemfire//org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:198)
    at gemfire//org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:163)
    at gemfire//org.apache.geode.cache.CacheFactory.create(CacheFactory.java:147)
    at gemfire//org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:56)
    at gemfire//org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:930)
    at gemfire//org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:831)
    at gemfire//org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:761)
    at gemfire//org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:272)
    at gemfire//com.vmware.gemfire.deployment.modules.internal.Launcher.invokeMainClass(Launcher.java:99)
    at gemfire//com.vmware.gemfire.deployment.modules.internal.Launcher.launch(Launcher.java:88)
    ... 6 more


This prevents the GemFire server from starting successfully.

Environment

NA

Cause

Even though --off-heap=true is removed from the region definitions, the cache.xml file still includes parameters related to off-heap memory configuration under the <resource-manager> section.

For example:

<resource-manager 
    critical-heap-percentage="xx"
    critical-off-heap-percentage="xx"
    eviction-heap-percentage="xx"
    eviction-off-heap-percentage="xx"/>

These parameters (critical-off-heap-percentage and eviction-off-heap-percentage) instruct GemFire to manage off-heap memory thresholds. When no off-heap memory is configured (i.e., --off-heap-memory-size=0), GemFire cannot initialize the OffHeapMemoryMonitor, leading to the IllegalStateException.

Resolution

To resolve this issue:

Edit the cache.xml file.

Remove any off-heap-related parameters from the <resource-manager> section.
Specifically, remove the following attributes if present:

critical-off-heap-percentage="xx"
eviction-off-heap-percentage="xx"

Save the file and restart the GemFire server.

After making these changes, GemFire should start successfully without the “No off-heap memory has been configured” error.