Under some circumstances, the reference counting model can enhance performance in terms of both memory usage and speed. A reference counting class counts how many object instances have an identical state. When two or more instances share the same state, the implementations creates only a single copy and counts the number of existing references to this copy. For example, an array of strings can be represented as a single string object that holds the number of elements in the array. Since initially the array elements share the same state (they all are empty strings), only a single object is actually needed to represent the array. When one of the array elements changes its state (it is assigned a different value, for instance), the reference counting object creates one more object–this is called “copy on write.”