A system comprising: an immutable buffer that protects data populated within the immutable buffer from changing during the lifetime of the immutable buffer, and the immutable buffer is also protected from having its physical address changed during the lifetime of the immutable buffer; a first computing entity that maintains a cache of the immutable buffer and has a strong reference to the immutable buffer, wherein so long as any entity has a strong reference to the immutable buffer, the immutable buffer is guaranteed to continue to exist for at least the duration of the strong reference for each entity that has the strong reference; and a second computing entity that communicates with the first computing entity to obtain a strong reference to the immutable buffer and thereafter read data from the immutable buffer, wherein upon or after reading the data from the cache, the second computing entity demotes the strong reference to the immutable buffer to a weak reference to the immutable buffer, wherein a weak reference to the immutable buffer does not guarantee that the immutable buffer will continue to exist for the duration of the weak reference, wherein upon receiving a request to read from the immutable buffer while the weak reference to the cache still exists, the second computing entity determines whether the immutable buffer still exists, if the immutable buffer still exists, the second computing entity converts the weak reference to the immutable buffer to a strong reference to the immutable buffer and reads the data from the immutable buffer without performing an inter-process or cross protection boundary communication with the first computing entity; and if the immutable buffer does not still exist, the second computing entity performs an inter-process or cross protection boundary communication with the first computing entity to thereby cause the first computing entity to re-acquire the data and to re-create a new immutable buffer and allowing the second computing entity to gain a strong reference to the new immutable buffer and read from the new immutable buffer. an immutable buffer that protects data populated within the immutable buffer from changing during the lifetime of the immutable buffer, and the immutable buffer is also protected from having its physical address changed during the lifetime of the immutable buffer; a first computing entity that maintains a cache of the immutable buffer and has a strong reference to the immutable buffer, wherein so long as any entity has a strong reference to the immutable buffer, the immutable buffer is guaranteed to continue to exist for at least the duration of the strong reference for each entity that has the strong reference; and a second computing entity that communicates with the first computing entity to obtain a strong reference to the immutable buffer and thereafter read data from the immutable buffer, wherein upon or after reading the data from the cache, the second computing entity demotes the strong reference to the immutable buffer to a weak reference to the immutable buffer, wherein a weak reference to the immutable buffer does not guarantee that the immutable buffer will continue to exist for the duration of the weak reference, wherein upon receiving a request to read from the immutable buffer while the weak reference to the cache still exists, the second computing entity determines whether the immutable buffer still exists, if the immutable buffer still exists, the second computing entity converts the weak reference to the immutable buffer to a strong reference to the immutable buffer and reads the data from the immutable buffer without performing an inter-process or cross protection boundary communication with the first computing entity; and if the immutable buffer does not still exist, the second computing entity performs an inter-process or cross protection boundary communication with the first computing entity to thereby cause the first computing entity to re-acquire the data and to re-create a new immutable buffer and allowing the second computing entity to gain a strong reference to the new immutable buffer and read from the new immutable buffer. if the immutable buffer still exists, the second computing entity converts the weak reference to the immutable buffer to a strong reference to the immutable buffer and reads the data from the immutable buffer without performing an inter-process or cross protection boundary communication with the first computing entity; and if the immutable buffer does not still exist, the second computing entity performs an inter-process or cross protection boundary communication with the first computing entity to thereby cause the first computing entity to re-acquire the data and to re-create a new immutable buffer and allowing the second computing entity to gain a strong reference to the new immutable buffer and read from the new immutable buffer.