when there is need to use Memory allocation on relatively huge datasets, there becomes possibilities to encounter the exception that is OutOfMemoryException. That shows that memory is not available for the allocation. This exception does not occur due to the limitation of memory of system, it occurs when virtual address space is not available for that byte of data. This takes place not because of the insufficient memory or the fact that memory has been reached limitations of the system memory, but it is because of the current implementation of memory allocation which uses a single byte array as a backing store.


When data set is relatively larger the backing store of memory allocation space requires more contiguous memory than is available in the virtual address space. If there is no continuous memory available for the process then it encounters the exception of OutOfMemoryException even there is enough space available but not continuous.


In this research we proposed an approach for dynamically deciding the best memory allocator for every application. The proposed solution does not require contiguous memory to store the data contained in the stream. This approach uses a dynamic list of small blocks as the backing store, which are allocated on demand as the stream is used. If there is no contiguous memory available in the Stream then memory allocation can be done from these small blocks of memory with no