Java堆的术语:年轻的,年老的和永久的代?
-
22-09-2019 - |
题
我试着去理解什么概念 年轻的, 旧 和 常驻代 在Java堆的术语,更具体地之间的相互作用的三代。
我的问题是:
- 什么是年轻的一代?
- 什么是老一代?
- 什么是永生?
- 怎么了三代互动的/相互关联的?
解决方案
这似乎是一个常见的误解。在Oracle JVM,常驻代部分不是堆。它是一个独立的空间为类定义和相关的数据。在Java6和早些时候,拘留串也存在常驻代。在Java7,拘留串存在的主要对象堆。
这里是一个很好的岗位上 常驻代.
我喜欢这说明,每个空间Oracle 指南JConsole:
对于热点Java VM,存储器 游泳池串垃圾收集 如下。
- 伊甸园空间(堆):游泳池来自其存储是最初分配 对于大多数对象。
- 幸存者空间(堆):池中含有对象都活了下来 垃圾收集的伊甸园 空间。
- 终身生(堆):池中含有对象的存在了 对于一些时间在幸存的空间。
- 常驻代(非堆):池中含有所有的反光 数据虚拟机本身, 例如类和方法的对象。与 Java Vm使用类数据共享, 这一代人分成 只读和阅读写的领域。
- 代码缓存(非堆):热点Java VM还包括一个代码缓存, 含有存储器是用于 汇编和存储的司机 代码。
Java使用代垃圾收集。这意味着,如果你有一个目foo(其中一个实例是一些类),更多的垃圾收集活动,它的生存(如果仍然引用),进一步得到促进。它开始在年轻一代(其本身就是分为多个空格-伊甸园和幸存者),并将最终结束在永久生如果它幸存下来足够长的时间。
其他提示
堆分为年轻人和老一代如下:
年轻一代 :它是地方,那里居住的短期和分为两个空间:
- 伊甸园空间 :当对象的创建使用的新的关键词分配的内存 在这个空间。
- 幸存的空间 :这是游泳池,其中包含的对象而已 幸存下来后java垃圾收集从伊甸园的空间。
老一代 :这个游泳池基本上包含永久的和虚拟的 (保留)空间,并将保持这些对象,其中幸存下来 垃圾收集之后从年轻一代。
- 永久空间: 这种存储池中包含的对象,其中幸存下来后,多个垃圾收集手段的对象后幸存下来的垃圾收集来自幸存者的空间。
常驻代: 这种存储池的名称,也说含有永久类的元数据和描述信息,以便永久代空间始终保留的类别,那些是联系在一起的类例如静态的成员。
Java8更新: 永久代 替换 元空间 这是非常相似。
主要区别是,元空间的重大小的动态,即,它可以扩大在运行时间。
Java元空间的空间:无限的(默认)
代码缓存 (虚拟或保留):如果您使用的热点Java VM这包括代码的高速缓冲区,含有存储器将被用于汇编和储存母代码。
什么是年轻的一代?
的 年轻一代 是所有新的对象是分配和老年人。当年轻生成填满,这将导致一个小垃圾收集。一个年轻一代充满死亡的对象是收集速度非常快。一些幸存下来的对象是老年和最终移至古代。
什么是老一代?
的 老一代 是用来储存只要尚存的对象。通常,一个阈值设定为年轻一代对象和当年龄得到满足,目的被移动到古代。最终老一代需要收集。这一事件是称为 主要垃圾收集
什么是永生?
的 常驻代 包含的元数据需要通过JVM来描述类和方法中使用的应用程序。常驻代居住的JVM在运行时根据课程中使用通过应用程序。
永久代已经替换元空间,因为Java8释放。
PermSize&MaxPermSize 参数将会被忽略,现在
怎么了三代互动的/相互关联的?
图像源&oracle technetwork教程的文章: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
"一般垃圾收集过程"在上文解释了它们之间的相互作用与众多的图表。
看看摘要图:
Java虚拟机组成三个代:一个年轻的一代,一个古老的生成,以及一个永久性的产生。大多数对象是最初分配中的年轻一代。老一代中包含的对象,有一些幸存下来的年轻一代的集合,以及一些大的对象,可能直接分配在老一代。常驻代拥有的对象JVM认为方便有垃圾收集管理,例如目的描述类和方法,以及课程和方法本身。
存在SunHotSpot JVM分为三代:年轻一代,古代和常驻代。
- 年轻一代:新创建的对象是分配给年轻。
- 老一代:如果新对象的要求对于一大堆空间,它会直接分配到老。还对象,其中幸存下来的几个GC周期得到晋升到古代。电子长期生活的对象的房子在旧。
- 常驻代:常驻代拥有的对象JVM认为方便有垃圾收集管理,例如目的描述类和方法,以及课程和方法本身。
供参考:常驻代不被认为是一部分Java堆。
怎么了三代互动的/相互关联的? 对象(除了大部分)是第一分配给年轻一代。如果一个物体仍然活着之后,x没有。的垃圾收集周期它会促进了旧/终身。因此,我们可以说,青年代中包含短暂的对象,而旧艮包含的对象具有很长的寿命。常驻代不与其他两个世代。