但是在一个流行的SO答案中,我发现永久代不是堆的一部分。
永久代(非堆):包含虚拟机本身的所有反射数据的池,例如类和方法对象。对于使用类数据共享的Java VM,此代被划分为只读区域和读写区域。
我被这些矛盾的数据搞糊涂了。我相信两个地方的数据都是有效的,但有保留意见。请为我澄清这个问题。
P.S.
让我们只谈论Sun/Oracle jvms。
P.S.2
我已经阅读了jvm gcs(串行,并行,cms和g1)的解释,并且我没有看到关于permgen的提及,这表明永久代不是堆的一部分。