compomics / COSS

COSS: CompOmics Spectral Searching
8 stars 3 forks source link

java.lang.OutOfMemoryError: Requested array size exceeds VM limit #21

Open issararab opened 2 years ago

issararab commented 2 years ago

Hi,

I am trying to run COSS with a pretty large library (3.5M Peptides, where 1/3 are decoys). When using a .msp file with a very small set it runs just normal. However, the above large set throws an error when trying to initialize some index list. Below is the error:

Starting COSS-V2 Rescoring with Percolator is set on by default in this version SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/LeIssar/Desktop/Software/COSS-2.0/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/LeIssar/Desktop/Software/COSS-2.0/lib/logback-classic-1.1.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 2022-06-19 19:56:25 INFO MainConsoleController:213 - Configuring Spectrum Reader .... Jun 19, 2022 7:57:13 PM com.compomics.coss.controller.ConfigSpecReaders dispatcher SEVERE: null java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Requested array size exceeds VM limit at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) at com.compomics.coss.controller.ConfigSpecReaders.dispatcher(ConfigSpecReaders.java:171) at com.compomics.coss.controller.ConfigSpecReaders.startConfig(ConfigSpecReaders.java:78) at com.compomics.coss.controller.MainConsoleController.configReader(MainConsoleController.java:215) at com.compomics.coss.controller.MainConsoleController.startRunning(MainConsoleController.java:108) at com.compomics.main.ProjectMain.launch(ProjectMain.java:91) at com.compomics.main.ProjectMain.access$000(ProjectMain.java:16) at com.compomics.main.ProjectMain$1.run(ProjectMain.java:71) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Caused by: java.lang.OutOfMemoryError: Requested array size exceeds VM limit at java.base/java.util.Arrays.copyOf(Arrays.java:3537) at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:229) at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:789) at java.base/java.lang.StringBuilder.append(StringBuilder.java:246) at com.compomics.ms2io.controller.BufferedRAF.getNextLine(BufferedRAF.java:141) at com.compomics.ms2io.controller.BufferedRAF.getNextLine(BufferedRAF.java:98) at com.compomics.ms2io.controller.Indexer.mspIndexer(Indexer.java:174) at com.compomics.ms2io.controller.Indexer.generate(Indexer.java:71) at com.compomics.coss.controller.ConfigSpecReaders$GetIndexList.call(ConfigSpecReaders.java:330) at com.compomics.coss.controller.ConfigSpecReaders$GetIndexList.call(ConfigSpecReaders.java:309) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)

I tried to increase the heap size of the JVM but it doesn't seem to solve the problem. Any suggestions?

Some env context: I am running the search on a VM running Windows 10 with 64Gb of RAM. That is 3 times the size of your VM reported on the original paper. Also, I am running the software using the following command: java -jar COSS-2.0.jar

Your input is much appreciated. Regards, AI