Shared memory is managed by the virtual machine and
potentially allocated and modified by many
threads
executing methods of various class loaders.
This memory consists primarily of the Java heap (which is garbage collected), and global JNI references. The allocation and release behavior of such memory is highly application dependent, with no general allocation or release pattern.