Java堆术语:年轻,老和老一代?

问题:

我想了解Java堆术语中youngoldpermanent generations的概念,更具体地说是三代之间的交互。
我的问题是:

  • 什么是年轻一代?
  • 什么是老一代?
  • 什么是永久代?
  • 三代人如何相互影响/相互联系?

回答:

这似乎是一个常见的误解。在Oracle的JVM中,永久代码不是堆的一部分。它是用于类定义和相关数据的单独空间。在Java 6及更早版本中,内置的字符串也存储在永久代码中。在Java 7中,内部的字符串存储在主对象堆中。
这是一个good post on permanent generation
我喜欢Oracle guide on JConsole中每个空格的说明

对于HotSpot Java VM,串行垃圾收集的内存池如下。

Java使用代数垃圾收集。这意味着如果你有一个对象foo(这是一个类的一个实例),那么垃圾收集事件就越多(如果它仍然有引用),那么它得到进一步的提升。它开始于年轻一代(它本身分为多个空间 – 伊甸园和幸存者),如果生存足够长时间,最终将终身于终身一代。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java heap terminology: young, old and permanent generations?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 + 6 =