Test: How changing the max amount of memory per VM Heap can effect your ROM (Cyanogen)
The latest release of Cyanogen’s CM6 features a new feature in Settings called ‘Cyanogen Settings.’ In one of my other posts, ‘Cyanogen CM6 for the nexus one (Review)‘, i briefly covered these new settings that cyanogen has added. In this post i decided to explore deeper into ‘Cyanogen Settings.’
What are the ‘Cyanogen Settings’?
Cyanogen settings are setting that cyanogen put into settings that allow you to tweak how certain things are shown, how applications are installed, tweak Dalvik VM settings that could speed up your phone and input settings.
- Application settings : allows you to modify your rom to allow application moving and to set the default install location
- Input settings : allows you to tweak haptic feedback, change what happens when you long-press home, enable trackball wake/unlock, enable menu unlock and to have the trackball always pulse while the screen is on
- Performance settings : allows you to enable JIT (just-in-time compiling), enable surface dithering (which improves image quality) and to change the VM heap size (32 m, 24m, 16m, 12m)
- User Interface : allows you to change the color of various different framework variables (such as the clock, notifications, notification bar) –previously in spare parts.
How can changing my VM Heap size speed up my ROM?
I’m not going to go into the physical effects of changing the VM Heap size in cyanogen settings (Note: this is for advanced users only.. i take no responsibility for anything that can potentially happen to your advice.
“Warning dragons ahead! The options in here will change the performance of your system, potentially for the worse. They are included for experimentation and we that you do not file bug reports if you have changed any from the defaults”
But i have decided to experiment and run some tests on how changing the maximum memory size per VM Heap can speed up your phone–or slow it down.
All of the tests i have performed have been in the most controlled environment for consistent tests (fresh reboot, airplane mode on, no programs running, Cyanogen default kernel overclocked to 1113 MHz). Here are the results of my linpack benchmarks for each memory size using Linkpack for Android:
From the results of my tests, you can see that 12m reigns superior and 32m is pretty close to matching it. 32m is the default that cyanogen ships with his roms, but maybe 12m should be? These tests are just my results when i experimented with them, If you have tested on your phone, you should comment on this with your results and we can see what is the best for our Android devices (make sure to include your device)
A quick tutorial: How to change the max amount of memory per VM Heap using Cyanogen Settings
- Install cyanogenmod (CM6) on your android device — only certain devices have CM6 out for them — go to cyanogenmod.com for the download and if needed, to check if your device has Cyanogenmod made for it
- From your homescreen, hit menu->settings->cyanogen settings
- From Cyanogen settings, click on performance settings
- Click VM Heap size to then select the max amount of memory you’d like per VM Heap
- Done! once your device is booted up, the Dalvik VM will now be running how you specified
UPDATE: These were just the results that i got while using Linpack for Android. After speaking with Cyanogen, I found out that using 12M IS really fast with small applications BUT with bigger applications this can cause crashes everywhere. The lower max amount of memory options are there because they work well with smaller devices (G1/MyTouch)