A solução foi: Increased max heap size for server from 256 to 768MB. Also enabled garbage collection logging.
O seguinte representa as referências recebidas para uma grande quantidade de memória, vista em um arquivo de heap primário após uma OutOfMemoryException no WebSphere 6:
Class Name | Shallow Heap | Retained Heap
-------------------------------------------------------------------------------------------------------------
| |
java.util.HashMap$Entry[1048576] @ 0xbd42d00 | 4,194,320 | 122,167,192
'- java.util.HashMap @ 0x1044918 | 48 | 122,167,240
'- class com.ibm.ejs.j2c.ConnectorRuntime @ 0x15871128 | 28 | 122,167,356
|- org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader @ 0x133fa48 | 96 | 191,140
|- class com.ibm.ejs.j2c.RALifeCycleManagerImpl @ 0x15834ea0 | 28 | 108
|- class com.ibm.ejs.j2c.ConnectorRuntime @ 0x15871128 | 28 | 122,167,356
|- class com.ibm.ejs.j2c.PoolManager @ 0x158723d8 | 28 | 2,028
|- class com.ibm.ejs.j2c.RAWrapperImpl @ 0x15875eb0 | 28 | 1,612
|- class com.ibm.ejs.j2c.XMLReader @ 0x15e6ef88 | 28 | 156
|- class com.ibm.ejs.j2c.ConnectionFactoryRefBuilderImpl @ 0x15ed5468 | 28 | 140
|- class com.ibm.ejs.j2c.ConnectionFactoryDetailsImpl @ 0x15efc758 | 28 | 201,060
|- class com.ibm.ejs.j2c.ResourceAdapterDDImpl @ 0x1605ce60 | 28 | 220
|- class com.ibm.ejs.j2c.ConnectorPoolProperties @ 0x1605d900 | 28 | 972
|- class com.ibm.ejs.j2c.ConnectionManager @ 0x163eea78 | 28 | 196
|- class com.ibm.ejs.j2c.XATransactionWrapper @ 0x163f0a30 | 28 | 28
|- class com.ibm.ejs.j2c.ConnectionFactoryBuilderServerImpl @ 0x16431540| 28 | 364
|- class com.ibm.ejs.j2c.DefaultSecurityHelper @ 0x16434800 | 28 | 28
|- class com.ibm.ejs.j2c.MCWrapper @ 0x165542a0 | 28 | 764
|- class com.ibm.ejs.j2c.PoolManager$GetJ2CProperties @ 0x16577758 | 28 | 28
|- class com.ibm.ejs.j2c.SharedPool @ 0x16578100 | 28 | 28
|- class com.ibm.ejs.j2c.FreePool @ 0x165787f0 | 28 | 28
|- class com.ibm.ejs.j2c.CMConfigDataImpl$GetJ2CProperties @ 0x16977b30 | 28 | 28
'- Total: 19 entries | |
-------------------------------------------------------------------------------------------------------------
Eu não passei por todos eles, mas as entradas do hashmap pareciam ter valores vazios.
Qual poderia ser a causa disso? Como obtenho mais informações?
Se você estiver usando o Oracle, o problema pode estar no consumo de memória do Oracle Connection Pool.
Veja este whitepaper , em particular a seção sobre como definir o parâmetro oracle.jdbc.implicitStatementCacheSize
Tags websphere