Memory

Computer memory needs to be managed.

Small device memory management

Memory managment is something that can be done explicitly by the development environment, for example when using languages like C and C++. Alternatively for higher level languages, like Java, the virtual machine itself will handle the memory managment, or garbage collection.

Explicit memory management allows much greater control over the machine resources, though requires greater development work, so, where possible this type of development work should be avoided.

The difficulty with using "implicit memory management" is that it is easy to development memory intensive applications, but difficult to manage the memory requirements. A good example of this is with Java, J2SE and J2ME with object-orientation as the basis of the languages, poorly structured code can very easily request very large amounts of memory, which will either slow a process down, or in the extreme case, stop the virtual machine running altogether. This is especially an issue with J2ME, which usually runs on lightweight machines.

One solution to this is the use of software design patterns which attempt to reuse objects, rather than create new ones all the time. An example of this is the "polymorphic factory pattern" from Gamma et al(1995).

Performance Measurement Pages - http://www.bagley.org/~doug/shootout/