JAVA中方法区是不是堆的一部分
5个回答
展开全部
方法区,又称永久代(Permanent Generation),常称为PermGen,位于非堆空间,又称非堆区(Non-Heap space)。
方法区是被所有线程共享。
所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。
简单说,所有定义的方法的信息都保存在该区域,此区属于共享区间。
静态变量 + 常量 + 类信息(构造方法/接口定义) + 运行时常量池存 在方法区中 。
但是, 实例变量 存在 堆内存 中,和方法区无关。
以上,只是逻辑上的定义。在HotSpot中,方法区仅仅只是逻辑上的独立,实际上还是包含在Java堆中,也是就说,方式区在物理上属于Java堆区中的一部分,而永久区(Permanent Generation)就是方法区的实现。
方法区是被所有线程共享。
所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。
简单说,所有定义的方法的信息都保存在该区域,此区属于共享区间。
静态变量 + 常量 + 类信息(构造方法/接口定义) + 运行时常量池存 在方法区中 。
但是, 实例变量 存在 堆内存 中,和方法区无关。
以上,只是逻辑上的定义。在HotSpot中,方法区仅仅只是逻辑上的独立,实际上还是包含在Java堆中,也是就说,方式区在物理上属于Java堆区中的一部分,而永久区(Permanent Generation)就是方法区的实现。
展开全部
可以说是堆的逻辑部分,但是它有一个别名为Non-Heap(非堆),目的就是为了将其与Java堆区分开。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像不是,编程语言的方法据我所知都是通过栈内存来存储的,栈后进先出的特性很适合存储方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
jdk 8 已经没有永久代 即把方法区放到了 native 本地内存中 , 方法区还是方法区 但是 实现从堆的永久变到了真正的外部, 好像是为了合并做准备
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询