job000089 | CVS Conversion of 4GB repository in Import mode runs out of memory. In a Java... VM with 2GB of memory the conversion fails with an OutOfMemoryError: GC overhead limit exceeded. It failed in "Building a revision list" at 23% Here is the stack trace: java.lang.OutOfMemoryError: GC overhead limit exceeded at java.util.Arrays.copyOf(Arrays.java:2219) at java.util.ArrayList.toArray(ArrayList.java:358) at java.util.ArrayList.<init>(ArrayList.java:164) at com.perforce.cvs.RcsNavigator.getBranchId(RcsNavigator.java:181) at com.perforce.cvs.RcsNavigator.followCodeLine(RcsNavigator.java:90) at com.perforce.cvs.RcsNavigator.followCodeLine(RcsNavigator.java:132) at com.perforce.cvs.RcsNavigator.add(RcsNavigator.java:69) at com.perforce.cvs.process.CvsProcessChange.processChange(CvsProcessChange.java:107) at com.perforce.common.process.ProcessChange.runSingle(ProcessChange.java:86) at com.perforce.common.process.ProcessChange.call(ProcessChange.java:49) at com.perforce.common.process.ProcessChange.call(ProcessChange.java:19) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caught EXIT shutting down ... The exception caused a heap dump to take place, and I analyzed the results with eclipse MAT Class Name Shallow Heap | Retained Heap | Percentage --------------------------------------------------------------------------------------------------------------- java.lang.Thread @ 0x1187a66a8 pool-1-thread-1 Native Stack, Thread | 104 | 1,887,101,856 | 99.91% |- com.perforce.cvs.RevisionSorter @ 0x11a474f00 | 24 | 1,822,811,856 | 96.51% | '- java.util.ArrayList @ 0x11a466240 | 24 | 1,822,811,832 | 96.51% | '- java.lang.Object[4102267] @ 0x16528ff70 | 16,409,088 | 1,822,811,808 | 96.51% | |- com.perforce.cvs.RevisionEntry @ 0x1305b7e98 | 72 | 90,560 | 0.00% | |- com.perforce.cvs.RevisionEntry @ 0x13054f828 | 72 | 90,552 | 0.00% | |- com.perforce.cvs.RevisionEntry @ 0x130512bc0 | 72 | 90,544 | 0.00% | |- com.perforce.cvs.RevisionEntry @ 0x1305ea188 | 72 | 90,544 | 0.00% | <more lines like the 4 above> --------------------------------------------------------------------------------------------------------------- It looks like 16 million discrete revisions are causing retained memory to exceed 2GB. Perhaps we need a way to store this information in a file or a Database. I will email the complete results to paul seperately. « | |
Add Job |