持久代是方法区还是堆中的?

在毕玄的<>一书中,明确指定持久代分布在方法区中,但我看了这张图
说持久代位于堆中,故求解

[img]http://dl.iteye.com/upload/attachment/0063/9400/d9238aa5-459d-3dfb-8fa2-b7ff91345d04.png[/img]

jvm

3个回答

首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。

建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/905273

而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。

都对,方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐