Java8---底层内存结构方法区

方法区:

jvm运行时内存区域主要分为:程序计数器,jvm栈,本地方法栈,堆,方法区。

jvm规把方法区描述为堆的逻辑结构(即永久区PermGen)但是他还有个别名,叫Non-Heap(非堆),目前情况除了Oracle-sun-  hotspot还采用永久区以外,Oracle-JRockit,IBM-J9以及国内阿里的jvm,都不存在永久区的概念,而Hotspot也逐渐消除永久区,jdk1.7的Hotspot中就把存放在永久区的字符串常量池移除,放到本地内存(物理内存)

方法区主要存放:类的各中加载信息,常量、静态变量等,方法区或者直接说虚拟机中的永久区会被垃圾回收,但是条件比较苛刻,几乎不会被回收。

Java8就彻底的移除了堆的永久区,取而代之的是元空间(MetaSpace),它最大的特点就是存储在物理内存(本地内存),这样的话减少了方法区进行垃圾回收的概率。一般情况下,是不会出现OOM的

响应的jvm调邮参数 PermGenSize  MaxPermGenSize都被剔除,取而代之的是MetaSpaceSize和MaxMetaSpaceSize

Java8---底层内存结构方法区_第1张图片

你可能感兴趣的:(Java8)