JVM内存模型是如何工作的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1678个文字,预计阅读时间需要7分钟。
前情提要:上文对运行时数据区描述了很多,实际上重点存储数据的是堆和栈区。内存的设计也着重从这两个方面展开(注意:这两块区域都是线程共享的)。对于虚拟机栈,本地方法栈,主要存储数据。
前情提要
上面对运行时数据区描述了很多,其实重点存储数据的是堆和方法区(非堆),所以内存的设计也着重从这两方面展开(注意这两块区域都是线程共享的)。对于虚拟机栈,本地方法栈,程序计数器都是线程私有的。 可以这样理解,JVM运行时数据区是一种规范,而JVM内存模式是对该规范的实现
图形展示
一块是非堆区,一块是堆区。
堆区分为两大块,一个是Old区,一个是Young区。
Young区分为两大块,一个是Survivor区(S0+S1),一块是Eden区。
S0和S1一样大,也可以叫From和To
对象创建过程
一般情况下,新创建的对象都会被分配到Eden区,一些特殊的大的对象会直接分配到Old区。
我是一个普通的Java对象,我出生在Eden区,在Eden区我还看到和我长的很像的小兄弟,我们在Eden区中玩了挺长时间。有一天Eden区中的人实在是太多了,我就被迫去了Survivor区的“From”区,自从去了Survivor 区,我就开始漂了,有时候在Survivor的“From”区,有时候在Survivor的“To”区,居无定所。直到我18岁的时候,爸爸说我成人了,该去社会上闯闯了。于是我就去了年老代那边,年老代里,人很多,并且年龄都挺大的。
本文共计1678个文字,预计阅读时间需要7分钟。
前情提要:上文对运行时数据区描述了很多,实际上重点存储数据的是堆和栈区。内存的设计也着重从这两个方面展开(注意:这两块区域都是线程共享的)。对于虚拟机栈,本地方法栈,主要存储数据。
前情提要
上面对运行时数据区描述了很多,其实重点存储数据的是堆和方法区(非堆),所以内存的设计也着重从这两方面展开(注意这两块区域都是线程共享的)。对于虚拟机栈,本地方法栈,程序计数器都是线程私有的。 可以这样理解,JVM运行时数据区是一种规范,而JVM内存模式是对该规范的实现
图形展示
一块是非堆区,一块是堆区。
堆区分为两大块,一个是Old区,一个是Young区。
Young区分为两大块,一个是Survivor区(S0+S1),一块是Eden区。
S0和S1一样大,也可以叫From和To
对象创建过程
一般情况下,新创建的对象都会被分配到Eden区,一些特殊的大的对象会直接分配到Old区。
我是一个普通的Java对象,我出生在Eden区,在Eden区我还看到和我长的很像的小兄弟,我们在Eden区中玩了挺长时间。有一天Eden区中的人实在是太多了,我就被迫去了Survivor区的“From”区,自从去了Survivor 区,我就开始漂了,有时候在Survivor的“From”区,有时候在Survivor的“To”区,居无定所。直到我18岁的时候,爸爸说我成人了,该去社会上闯闯了。于是我就去了年老代那边,年老代里,人很多,并且年龄都挺大的。

