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:
run
((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:
run
(As SystemUser) run System stopSymbolGem. System startSymbolGem.
%
Last updated: 7/8/15