[ https://issues.apache.org/jira/browse/CMIS-868?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14212222#comment-14212222 ]
Florian Müller commented on CMIS-868: ------------------------------------- How many types do you have in your repository and how big is your type definition cache (session parameter CACHE_SIZE_TYPES)? > OOM issue when run concurrent test on GetDescendant, GetTypeFlat, GetTypeTree. > ------------------------------------------------------------------------------ > > Key: CMIS-868 > URL: https://issues.apache.org/jira/browse/CMIS-868 > Project: Chemistry > Issue Type: Bug > Components: opencmis-client > Affects Versions: OpenCMIS 0.12.0 > Environment: AIX 7.1+Websphere ND 8.5.5.3 > Java(TM) SE Runtime Environment (build > pap6460_26sr2ifix-20120419_02(SR2+IV19661)) > IBM J9 VM (build 2.6, JRE 1.6.0 AIX ppc64-64 20120322_106210 (JIT enabled, > AOT enabled) > J9VM - R26_Java626_SR2_20120322_1722_B106210 > JIT - r11_20120322_22976 > GC - R26_Java626_SR2_20120322_1722_B106210 > J9CL - 20120322_106210) > JCL - 20120316_01 > Reporter: Yi Wang > Priority: Critical > Attachments: heapdump.20141111.151212.10223668.0002.zip.001, > heapdump.20141111.151212.10223668.0002.zip.002, > heapdump.20141111.151212.10223668.0002.zip.003, > heapdump.20141111.151212.10223668.0002.zip.004, > javacore.20141111.151212.10223668.0003.txt > > > When I run concurrent test with 100 threads on GetDescendants, GetTypeTree, > GetTypeFlat function. > I found there are many hashtable objects(>500MB) saved in heap after analyzed > heap dump. I found there was one line(red line below) in > convertTypeDefinition method that chemistry used typeDefinition object as the > key of HashMap. However, JAVA does not think 2 typeDefinition objects are > same objects although the value of typeDefinition members are same. I debug > to this line, the "result" variable always was "null". It made the > objectTypecache larger and larger when run concurrent test. > private ObjectType convertTypeDefinition(TypeDefinition typeDefinition) { > lock.writeLock().lock(); > try { > ObjectType result = null; > if (objectTypeCache == null) { > objectTypeCache = new IdentityHashMap<TypeDefinition, > ObjectType>(); > } else { > result = objectTypeCache.get(typeDefinition); > } > if (result == null) { > result = objectFactory.convertTypeDefinition(typeDefinition); > objectTypeCache.put(typeDefinition, result); > } > return result; > } finally { > lock.writeLock().unlock(); > } > } -- This message was sent by Atlassian JIRA (v6.3.4#6332)