Leak analysis

Memory leak analysis

What to do if you suspect a memory leak 

A memory leak may be the cause if Omniscope's RAM memory footprint is increasing over time for no obvious reason. Memory leaks are unlikely in sable production releases of Omniscope, but more likely in daily, alpha or beta releases. If you suspect a memory leak in Omniscope, please follow these steps to verify the leak.

Verifying a memory leak

The Memory Diagnosis tool  is used to observe the patterns in the Omniscope's memory use. Press Ctrl+Shift+Alt+M in Omniscope to open this tool.

Memory management algorithms in the Java VM used by Omniscope can cause apparently random fluctuations - sudden increases and drops, or small continuous changes. We will use the Extreme GC button (which takes about 8 seconds) to ask Omniscope to free up as much non-essential memory as possible, removing this "noise" from the results. We will leave the Memory Diagnosis window open throughout this analysis.

Diagnostic Steps

First you must identify and narrow down the task or group of tasks causing the leak.

Then do the same exact task 3 times (or more) in a row.

After both iterations 2 and 3 (and perhaps further), click the Extreme GC button and note the memory usage. Ignore small changes (1% differences), but anything larger is a potential leak.

Example results:

Not a leak:
- exit and open report page X
- exit and open report page X -> Extreme GC -> 150mb
- exit and open report page X -> Extreme GC -> 150mb +/- approx. 1%

Probably a leak:
- exit and open report page X
- exit and open report page X -> Extreme GC -> 150mb
- exit and open report page X -> Extreme GC -> 160mb

You have to do at least 3 iterations, but may choose to do more. If, for example, you do 5 iterations, and there is a steady increase across several of the iterations, this is an even more compelling proof of a leak.

Note: it is not considered a leak if a task consumes memory which isn't released immediately, but only if the exact same task done repeatedly consumes more and more memory in a memory-confined situation (simulated by Extreme GC). This is why we discount any increase in memory used for iterations 1 to 2.

Found a memory leak - what next?

Please report from inside Omniscope using Help > Error reporting -> Report a problem.

In the report, describe the task you are repeating in precise detail. Include the results of your memory diagnosis.

You may be subsequently contacted to ask for the IOK file (in confidence), so keep a copy of the file in the correct state needed to reproduce the problem (layout, data, settings, etc.).  We may also ask for a memory dump, although this is unlikely.