Changing the JVM Memory Settings for Pentaho Design Tools on OS XPosted: October 8, 2012
Pentaho ships a number of design tools, such as Pentaho Report Designer, Pentaho Data Integration, and others for Linux, Windows, and OS X. While the apps appear to be native, they are Java applications that have been wrapped to run in the native environment.
One of the key settings that users often want to change are the JVM memory settings. These settings indicate how much memory a process should start with and, more importantly, the maximum amount it should use. If you allocate too little then it’s possible to get OutOfMemory exceptions and the application stops functioning. This post will show you how to modify the settings.
Finding the File to Modify
The file we want to modify is called Info.plist. This file contains settings for the application that is being executed and is a standard file in an OS X application. OS X bundles applications into an Application bundle with an extension of .app. This is really a directory, but FInder and other tools make it appear as if it’s a single file.
There are two ways to get access to the file. The first is to use Finder. Find the application file in the design-tools and sub-folders under Pentaho or wherever you installed them. The application will show up as a single file. Now right-click on the file and select “Show Package Contents”. This will open a new view in Finder with all of the contents of the file.
Once you are viewing the contents of the package, select the Contents folder and you should see the Info.plist file. This is an XML file, so you can edit with any text editor. If you double-click it will attempt to use XCode if you have it installed. I recommend using a different text editor, such as TextMate or textedit.
Right click on the Info.plist file and select Open With… and then choose the editor of your choice. You may have to select Other… and then choose the app if the one you want isn’t displayed. The file should open up in your text editor.
The alternative to Finder, is to use the Terminal. This is my preferred approach, but it should only be used by those who are comfortable working from the command line. You will need a text editor that you are also comfortable using, such as vi or emacs. I personally prefer vi.
Navigate to the same folder. The Terminal doesn’t treat the .app file as anything other than a folder, so basic usage of the cd command is enough. Once you are in the proper directory, edit the file.
Changing the File
Now that you have the file open in an editor, you can make the needed change. Near the bottom of the file you should find a declaration similar to the following:
<string> -Xms512m -Xmx1024m</string>
These are the settings that will get passed to the JVM when the application starts. The -Xms setting is the amount of memory used on started. The -Xmx is the maximum amount to use before errors start happening. In this example I have 512MB on startup and a maximum of 1024MB (1GB) of memory maximum. Note that these are increase from the default that I started with.
It’s customary to specify the memory in megabytes, using the 256m where m is megabytes. It is also customary, although not required, to have the memory e in exponentials of 2, e.g. 256, 512, 1024, etc. The mx value should always be larger than the ms value. I personally make it twice as large.
Once you’ve set the values you want, save the file and then restart the application if it is running. Assuming you increased the values, you should now have more memory.