constellation-app / constellation

A graph-focused data visualisation and interactive analysis application.
https://constellation-app.com
Apache License 2.0
385 stars 59 forks source link

Analytic View - java.lang.OutOfMemoryError #2199

Open Quasar985 opened 2 weeks ago

Quasar985 commented 2 weeks ago

Prerequisites

Description

Running many centrality analytics in the Analytic View on a large graph can produce a java.lang.OutOfMemoryError: Java heap space error. This is somewhat related to issue https://github.com/constellation-app/constellation/issues/2191 but is not a problem with the "Katz Centrality Analytic".

Steps to Reproduce

  1. Open a large graph in consty. E.g. build a sphere graph with 100,000 nodes and 50 transactions

  2. Open analytic view, click categories dropdown and select many (if not all) centrality check boxes. It is not necessary to check "Katz Centrality Analytic" to get this error thrown. For example, checking all boxes except for "Katz Centrality Analytic" threw the error

  3. Click Run and observe exception thrown

Expected behaviour: Either no exception is thrown, or user is alerted of insufficient memory in a more friendly way

Actual behaviour: java.lang.OutOfMemoryError: Java heap space is thrown

Reproduces how often: About 90% of the time

Additional Information

Different stack traces in error messages: HeapError

java.lang.OutOfMemoryError: Java heap space

au.gov.asd.tac.constellation.graph.node.plugins.DefaultPluginInteraction$Timer.getTime(DefaultPluginInteraction.java:338)
au.gov.asd.tac.constellation.graph.node.plugins.DefaultPluginInteraction$Timer.getTime(DefaultPluginInteraction.java:317)
au.gov.asd.tac.constellation.graph.node.plugins.DefaultPluginInteraction$Timer.run(DefaultPluginInteraction.java:359)
java.lang.OutOfMemoryError: Java heap space

java.management/java.lang.management.ThreadInfo.initialize(ThreadInfo.java:242)
java.management/java.lang.management.ThreadInfo.<init>(ThreadInfo.java:199)
java.management/sun.management.ThreadImpl.dumpThreads0(Native Method)
java.management/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:518)
java.management/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:506)
org.netbeans.modules.sampler.Sampler$1.run(Sampler.java:178)
java.base/java.util.TimerThread.mainLoop(Timer.java:566)
java.base/java.util.TimerThread.run(Timer.java:516)