When launched as an Application, Jalview will automatically configure the amount of memory allocated to the program to be 90% of physical memory, or 32GB - which ever is smaller.
This behaviour might not be ideal if you are working on a machine that runs other memory intensive processes, and (since Jalview 2.11.2) can be changed via the Startup Preferences panel.
Signs that Jalview is Running out of Memory
If
Jalview has not explicitly told you that it has run out of memory,
then a common sign is that a function that normally works seems to
have no effect when working with a larger set of sequences (this
might include open dialog boxes for saving PNG files, or when
interpreting the result of a web service calculation).
Jalview Memory Usage Monitor: If you are concerned about memory, or think that things might be behaving strangely because of a shortage of memory, then you can check this by enabling the memory usage monitor. This is done by selecting the Tools→Show Memory Usage option. Once enabled, the memory usage monitor displays the currently available memory, the total memory, and the percentage free at the bottom left hand side of the Jalview Desktop window's background.
Increasing the memory available to Jalview
The
amount of memory allocated is defined wheb Jalview is launched
because of the way that Java runs on a computer - what is actually
run is a program called a Java virtual machine (a JVM) which
executes the java program instructions. The JVM has limits on the
memory that can be allocated to the java program - and it is often
necessary to adjust them if you are working with particularly large
datasets, or need to make room for other processes on the machine.
Jalview 2.11 includes a launcher that automatically
configures the proportion of memory allocated to Jalview's JVM. By default it requests up to 90% of available memory whilst ensuring that at least 0.5G is available to the operating system and at least 0.5G is available to the Java runtime platform, or a specified 'maximum memory limit' - which ever is smaller. The amount of memory requested can be altered in a number of different ways:
jalview.jvmmempc=50 In Windows and in macOS you can then launch
Jalview by double clicking on this file, and your memory setting
will be used instead of the default value.
/PATH_TO_JALVIEW/Jalview /path/to/file/mymemorysetting.jvl If you
want to use a memory setting like this and open a file you can use
both the jvl and alignment files as command line arguments, but
you must put the jvl file first, e.g.
/PATH_TO_JALVIEW/Jalview /path/to/file/mymemorysetting.jvl /path/to/alignments/myalignment.fa
Alternatively, you can use the standard Jalview command line
arguments with or without the jvl file (first), e.g.
/PATH_TO_JALVIEW/Jalview /path/to/file/mymemorysetting.jvl -open https://www.jalview.org/examples/jpred_msa.fasta -annotations https://www.jalview.org/examples/jpred_msa.seq.concise -colour Clustal
You can use command line arguments to control memory settings in
Windows and macOS too:
\PATH_TO_JALVIEW\Jalview.exe %HOMEPATH%\mymemorysetting.jvl -open %HOMEPATH%\myalignment.fa
In macOS you can use the macOS open command like this:
open /Applications/Jalview.app --args ~/mymemorysetting.jvl -open ~/myalignment.fa(put
all the Jalview arguments after the --args parameter)
jalview.jvmmemmax = 32GAdjusting this default (via a JVL file, above) will allow larger amounts (or can limit the amount) of memory to be allocated to Jalview in conjunction with the jalview.jvmmempc setting.
java -jar jalview-all-2.11.1.0-j1.8.jar -jvmmempc=50 -jvmmemmax=20g(this example will launch Jalview with a maximum heap size of the smaller of 20GB or 50% of physical memory detected).
-Xmx8gJalview binaries for Windows and macOS are distributed
with their own JVM which you will find in
\PATH_TO_JALVIEW\release
/Applications/Jalview.app/Contents/Resources/app/releaseand on linux or unix
/PATH_TO_JALVIEW/release
java -Xmx1500m -cp "/PATH_TO_RELEASE_DIR/*" jalview.bin.Jalview
Or on Windows
java.exe -Xmx1500m -cp "\PATH_TO_RELEASE_DIR\*" jalview.bin.Jalview
Note: for this to work the classpath argument wildcard must be simply
a '*' and not '*.jar'.