The memory available in most computers is not infinite and computers typically simultaneously run multiple programs. Moreover in mobile battery powered devices the addition of more random access memory (RAM) to run programs increases power consumption. For this reason it is common to specify in software development contracts that the delivered product, when compiled and/or running, should use less than a specified amount of memory, e.g., “the memory footprint shall be less than X bytes.”