It is always fun to customize a development tool and make it our own ! SAP Design Studio has made its mark as one of the best analytical tools in the market, but the client tool leaves a lot to be desired. When deployed in shared environments like ‘Remote Desktop Servers’, the performance and stability of the tool is compromised.

Since it is based on Eclipse, SAP Design Studio offers options for a wide range of customization like memory allocation, the VM mode and even changing the JAVA VM. These can be done by tweaking JAVA parameters, and provide good improvement in tool performance and stability.

Let us get straight to exploring the options in the ‘SapDesignStudio.ini’ file located in the SAP Design Studio installation directory.

Changing the JAVA VM

Since it is a JAVA based application, the client tool’s performance and stability depends heavily on the JAVA vendor and version used. Issues in the JAVA VM will directly impact performance. We can swap the default JVM with another, using –vm parameter.

Open the ‘SapDesignStudio.ini’ file located in the SAP Design Studio installation directory and add the –vm parameter, followed by the path to the javaw.exe file. –vm has to be placed above –vmargs. In the example above, I have used SAP JVM instead of the default JVM.

Once the above customization is applied, we can see that the JAVA vendor information has been updated in the client tool configuration.

JVM Mode

The JAVA VM mode plays a huge role in tool performance. Starting the JVM in server mode will improve performance to a good extent and make better use of available resources. In server mode, the JVM will be optimized for heavier loads and extended usage. This tweak will help in shared environments.

In the ‘SapDesignStudio.ini’ file, add –server to enable JVM server mode. This has to be added below the –vmargs parameter. In server mode, application startup will be slower but that is compensated by better performance.

Memory Tweaks

Memory is the basis of performance. Memory allocated to the tool can be changed with the help of a handful of parameters. With increased memory, there is a big boost in performance.

However while playing around with memory parameters, please ensure there is enough memory in the system. With insufficient memory, trying to allocate more memory for JVM will result in ‘Failed to create the JAVA Virtual Machine’ error.

Heap Space Allocation

Heap space is allocated to the JAVA VM by the Operating System. This allocation is controlled by two parameters, –Xms and –Xmx.

-Xms

This parameter controls the minimum amount of heap space that needs to be allocated to the JVM, when it starts.

-Xmx

This parameter controls the maximum amount of heap space that can be allocated to the JVM. The JVM will start with the –Xms value of memory and acquire more as needed, until it reaches the –Xmx value. When this heap space is full, it will recycle objects to gain more space or will terminate with an ‘OutOfMemory’ error. The –Xmx value should be enough to handle the expected load. These two parameters can accept numbers in KB, MB or GB. 1g means 1 GB, 1024m means 1024 MB…

It is important to be careful while giving these values, as the JVM might fail to initialize if memory allocation is beyond system capacity. The recommendation is to have 1/4 of the system memory as maximum heap space. Also, JAVA by its very nature, will keep trying to get a continuous block of memory from the Operating System. The JVM will fail to initialize if the continuous block of memory is not available.

Permanent Generation Memory

Permanent Generation (PermGen) space is yet another type of memory allocated to the JAVA VM to store its classes and objects. We could think of it as the metadata storage of JVM. When this memory is out of bounds, we get the ‘PermGen : Out of Memory’ exception. This permgen size is important for the client tool and critical when developing custom add-ons.

This is controlled by the following two parameters

-XX:PermSize

This parameter defines the initial permgen space allocated to the JVM. Unlike heap space, the value is assigned to the parameter using the assignment operator. Heap space value is suffixed to the parameter.

-XX:MaxPermSize

This parameter defines the maximum permgen space that the JVM can use. This is similar to the –Xmx parameter but we don’t need as much memory for permgen as for heap space. Since this is for metadata storage, we can have optimal memory allocated to it. It does not need several GBs of memory, unlike the heap.