Patent ID: 8782371

Claim:
A method for managing a single memory pool that is used by a printing system that comprises a language server and a raster server, wherein the language server is for generating display lists from a document in a page description language and storing the display lists in a display list memory provided in the single memory pool, and the raster server is for rasterizing the display lists stored in the display list memory into a bitmap image and storing the bitmap image in a frame buffer memory provided in the single memory pool, wherein the single memory pool comprises sub-pools including: a super-block pool comprising a plurality of super-blocks, each of which comprises a contiguous memory section having a first size that is N times of a second size, where N is a positive integer greater than one, the super-block pool being used as the frame buffer memory for storing a plurality of super-block objects; a node pool comprising a plurality of blocks each of which comprises a contiguous memory section having the second size, the node pool being for storing a plurality of node objects; and a block-pool comprising a plurality of blocks each of which comprises a contiguous memory section of the second size, the block-pool being used as the display list memory for storing a plurality of block objects; the method comprising: providing a memory manager for the language server and the raster server; and allocating by the memory manager memory from the single memory pool to the frame buffer memory of the printing system and to the display list memory, upon receiving memory allocation requests from the language server and the raster server, wherein each memory allocation request is directed to at least one of the sub-pools, wherein, for each memory allocation request from the language server or the raster server, the method further comprises: allocating by the memory manager an object local to the sub-pool identified in the memory request, if the memory manager determines that local objects are available in the sub-pool to satisfy the memory request; if the memory manager determines that the memory request is directed to the node-pool or the block-pool and there are no available local objects in the respective sub-pool to satisfy the memory request, dividing by the memory manager a super-block by N to create N sets of new blocks, allocating at least one of the new blocks to the respective sub-pool, and allocating the node object or the block object from the respective sub-pool to the frame buffer memory; and applying by the memory manager a defragmentation routine to the single memory pool that includes the sub-pools, and creating new super-blocks from blocks of the second size in the single memory pool.