A computer-implemented method performed by at least one processor to examine an application to identify code and data for pre-layout in a byte-addressable, persistent random access memory, BPRAM, and to initialize the application, the method comprising: identifying a target application for which to create a fast-initializing image of the application; performing static analysis on the identified target application to determine one or more statically and dynamically linked modules associated with the application and to identify data used by the application that is changing rarely enough in order to avoid writing to BPRAM a number of times in excess of a wear specification for the BPRAM so that BPRAM is suitable for storing the data, wherein performing static analysis comprises loading a main module associated with the application and examining an executable format of the main module to identify sections of the main module; performing dynamic analysis by executing the application and monitoring initialization of the application to identify additional modules and data associated with the application, wherein the dynamic analysis provides information to identify particular code and data that is suitable for layout in BPRAM; identifying a BPRAM device suitable for storing a pre-laid out image from which to initialize the application; creating a layout for a fast initializing image based on an in-memory layout of the application and the code and data suitable for storage in BPRAM identified during static and dynamic analysis, wherein creating the layout comprises creating a unified layout image with contents of one or more module code sections stored together in BPRAM and wherein the fast-initializing image is ready for executing and is created before receiving a request to execute the application; copying the created layout image to the identified BPRAM device; receiving a request to run the application; and copying the layout image from the BPRAM to DRAM and executing the application from there. identifying a target application for which to create a fast-initializing image of the application; performing static analysis on the identified target application to determine one or more statically and dynamically linked modules associated with the application and to identify data used by the application that is changing rarely enough in order to avoid writing to BPRAM a number of times in excess of a wear specification for the BPRAM so that BPRAM is suitable for storing the data, wherein performing static analysis comprises loading a main module associated with the application and examining an executable format of the main module to identify sections of the main module; performing dynamic analysis by executing the application and monitoring initialization of the application to identify additional modules and data associated with the application, wherein the dynamic analysis provides information to identify particular code and data that is suitable for layout in BPRAM; identifying a BPRAM device suitable for storing a pre-laid out image from which to initialize the application; creating a layout for a fast initializing image based on an in-memory layout of the application and the code and data suitable for storage in BPRAM identified during static and dynamic analysis, wherein creating the layout comprises creating a unified layout image with contents of one or more module code sections stored together in BPRAM and wherein the fast-initializing image is ready for executing and is created before receiving a request to execute the application; copying the created layout image to the identified BPRAM device; receiving a request to run the application; and copying the layout image from the BPRAM to DRAM and executing the application from there.