1. A method for using volatile and non-volatile memory to pre-load a plurality of applications in a computing device, the method comprising: performing during boot up of a computing device having a volatile memory and a non-volatile memory: pre-loading a plurality of applications in the volatile memory until it is determined that available space in the volatile memory has dropped below a threshold level, wherein an application is pre-loaded in the volatile memory by: copying application code for the application from the non-volatile memory into the volatile memory; executing the application code from the volatile memory, wherein executing the application code creates application data; storing the application data in the volatile memory, wherein the application data maintains current state information of the application; and further during boot up, in response to determining that the available space in the volatile memory has dropped below the threshold level: moving the application data for some but not all of the plurality of applications from the volatile memory to a swap area of the non-volatile memory and deleting the application code from the volatile memory for the some but not all of the plurality of applications whose application data was moved from the volatile memory to the non-volatile memory; and pre-loading at least one additional application in the additional space in the volatile memory created by moving the application data and deleting the application code; wherein after the computing device is booted up, there is application data for pre-loaded applications in both the volatile memory and the swap area of the non-volatile memory.