If you want to generate small or medium size membranes using the MembraneEditor, the following section will not be very interesting for you. If you want to generate larger files and you are using a 64 bit machine, usually this section will also not be of concern. But if you want to generate over-sized membranes, e.g. 2000x2000 Angstrom, or larger vesicles and export them to PDB format, the following section might be a good alternative to buying more physcial ram for your computer.
Tuning with Java VM Arguments
The MembraneEditor was developed using Eclipse. Downloading the project, it is easy to import it into the Eclipse application:
http://www.cellmicrocosmos.org/index_cm ... m2download
To tune a Java application like the MembraneEditor, VM (Virtual Machine) arguments can be used. The following image shows, where the VM arguments discussed in this article have to placed.
In addition, the program arguments can be used to define a path to a file to load when starting the MembraneEditor.
Heap Space
Java uses the so-called HeapSpace to store data in the memory of the computer. Usually, especially when running a 32 bit system, Java used to allocate only a few MB of RAM, like 256 MB or something similar. On 64 bit machines, Java already usually uses a few GB of Ram for the Heap Space. Anyway, in some extreme cases, this may not be sufficiant. If you want to create for example a very large membrane, e.g. 2000x2000 Angstrom, and to export it to PDB, you might need to define additional memory for your application.
To do so, the Xmx-option defines the maximum amount of space Java is allowed to allocate. Of course, this value has to be in the limits of available memory. If you have a computer with 4GB Ram, then the Operating System like Windows 7 or Ubuntu usually already needs around 1 GB Ram. Therefore, you could choose a size for the Heap Space of around 2500m. The small "m" indicates the MegaBytes. In addition, 32 bit Java usually limits also the Heap Space available. On 32 bit system you usually are happy if you can define a value of 1400m. The following value was chosen on a 64 bit Windows 7 machine with 8 GB of Ram:
-Xmx6428m
In addition, the Xms-option can be used to define the minmal/initial amount of available memory. This value has to be smaller then the Xmx-option. It makes sense to set this value, because otherwise Java might start with a very small amount of memory and has dynamically to extend the reserved memory each time the limits of the actual memory are reached. When using larger files, it is a good idea to start already with a appropriate Xms-value:
-Xms4028m
Set java thread stack size:
-Xss100m
Enable strictest checks, anticipating future default:
-Xfuture
Output cpu profiling data (this does not tune anything, just showing some information):
-Xprof
Reduce use of OS signals by Java/VM:
-Xrs
Garbage Collector
The usual Java Garbage Collection algorithm waits for a relative long time before it continues to tidy up the heap space. The CMS collector algorithm can be used to decrease the pause times and to improve the deletion of garbage from the memory. Of course, this method will use need more CPU time then the usual algorithm:
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=1
Disable class garbage collection:
-Xnoclassgc
Activates incremental Garbage Collection
-Xincgc
Stereo
If you use professional Stereo equipment - like the nVidia Quadro (FX) cards or ATI Fire GL cards - then you can activate the stereo mode of the MembraneEditor by adding the following line to the VM:
-Dj3d.stereo=PREFERRED
References
Using the command java -X in a console will show some of the options discussed here.
Some of the information and more are found at the following pages.
http://docs.oracle.com/cd/E18930_01/htm ... abeic.html
http://www.devdaily.com/blog/post/java/ ... ze-control