美文网首页
JAVA内存模型(二) 永久代和元空间

JAVA内存模型(二) 永久代和元空间

作者: Minstrel_a7ca | 来源:发表于2018-07-13 11:28 被阅读0次

PermGen(永久代)

与方法区的区别

方法区是JVM规范,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。
PermGen则是一种具体实现。并且只有HotSpot 才有PermGen。
由于方法区主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久代的内存溢出。
不停的动态生成类,就会导致PermGen溢出。
在JDK 1.8中,永久代这个区间就没有了,取而代之的是元空间。

设置参数

-XX:PermSize and -XX:MaxPermSize
java -XX:PermSize=128m -XX:MaxPermSize=256m MyApp


Metaspace(元空间)

移除永久代的工作从JDK1.7就开始了。JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。
字符串常量由永久代转移到堆中,并且 JDK 1.8 中已经不存在永久代的结论

元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。

设置参数

-XX:MetaspaceSize and -XX:MaxMetaspaceSize
java -XX:MetaspaceSize =128m -XX:MaxMetaspaceSize=256m MyApp

相关文章

  • JAVA内存模型(二) 永久代和元空间

    PermGen(永久代) 与方法区的区别 方法区是JVM规范,存储了每个类的信息(包括类的名称、方法信息、字段信息...

  • java8内存结构变化

    java8移除了永久代,增加了元空间。1)java7以前的版本Hotspot的方法区位于永久代,并且永久代和堆是互...

  • Java8内存模型—永久代(PermGen)和元空间(Metas

    作者:liuxiaopeng 原文出处:https://www.cnblogs.com/paddix/p/5309...

  • Java8内存模型—永久代(PermGen)和元空间(Metas

    一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。...

  • JVM调优

    一、JVM内存模型 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代...

  • JVM 内存模型

    一:Java技术体系模块图 二:JVM内存区域模型 虚拟机内存 1.方法区 也称"永久代” 、“非堆”, 它用于...

  • Android 垃圾回收与内存优化

    一些资料记录: 一、 java内存模型 二、 垃圾回收算法 三、 垃圾回收器对象的新生代、老年代、永久代关系 四、...

  • JVM

    Java虚拟机学习(1):体系结构 内存模型 JVM内存区域模型 1.方法区: 也称“永久代”、“非堆”,它用于存...

  • jvm内存模型

    一、内存区域 堆 直接内存 方法区1.8之前实现是永久代,在堆中。1.8之后改成了元数据空间,放到了直接内存。运行...

  • JAVA8内存模型

    JAVA8内存模型 对于Java8, HotSpots取消了永久代,那么是不是也就没有方法区了呢?当然不是,方法区...

网友评论

      本文标题:JAVA内存模型(二) 永久代和元空间

      本文链接:https://www.haomeiwen.com/subject/xgdjpftx.html