Bug 45379

GemStone/S 64 Bit

3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2,,,,,,, 3.1, 3.0.1, 3.0

All Platforms


SymbolGem can run out of memory if AllSymbols is really big

If AllSymbols is quite large,  the SymbolGem will run out of VM temporary object space, crashing with the following error in the *symbolgem.log file:

GemStone: Error         Fatal
VM temporary object memory is full
, almost out of memory, too many markSweeps since last successful scavenge Error Category: 231169 [GemStone] Number: 4067  Arg Count: 1 Context : 20 exception : 20
Arg 1:   20

[Info]: Logging out at 06/11/2015 16:17:38 BST (1434035858) SymbolGem, received error number 4067.

WARNING:  under these conditions, the stone will automatically restart the SymbolGem, but then will immediately hit a secondary serious issue: bug 45376.  See that bugnote for details.


Avoid the problem by increasing the size of the temporary object cache allocated for the SymbolGem when it starts up.

First, determine the size of your AllSymbols collection:

   ((AllUsers userWithId: 'SymbolUser') resolveSymbol: #AllSymbols) value size

Next, determine a new size for the temporary object cache of the SymbolGem using this equation:

   SymbolGemTempCacheSize :=   5000 + ( AllSymbols size )/5.0e6)* 20000

Then edit the $GEMSTONE/sys/runsymbolgem script to adjust the size of the symbol gem temporary object cache to be at least this size (you might want to pad it for future growth):

   unix> cd $GEMSTONE/sys
   unix> chmod +w runsymbolgem

Edit the file runsymbolgem to change the line:

   gemTempObjCacheSize="20000" # GEM_TEMPOBJ_CACHE_SIZE

To the new value calculated above.  For example, for SymbolGemTempCacheSize = 65000:

   gemTempObjCacheSize="65000" # GEM_TEMPOBJ_CACHE_SIZE

Save the file and then stop/restart the symbol gem:

   (As SystemUser) run System stopSymbolGem. System startSymbolGem.

Last updated: 7/8/15