美文网首页
JVM内存模型与GC

JVM内存模型与GC

作者: 16325 | 来源:发表于2017-10-26 10:57 被阅读0次

    内存模型

    线程栈:每个线程创建自己的栈区,大小可配置。如果太小递归调用会stackOverflow
    堆内存:存储对象的区域,最大最小值均可设置
    方法区:常量,类信息,静态变量等,大小可配置
    程序计数器:不会有内存溢出,记录程序执行行数等
    本地方法栈:会内存溢出。
    image.png

    GC-堆内存

    Eden :新创建对象都在伊甸区
    S0:新生代复制区域,默认是Eden的八分之一大小
    S1:新生代复制区域,S0和S1两个区域完成不断复制的过程。
    Old:老年代,新生代无法回收,大对象都会进入老年代。

    GC-永久代

    指方法区的内存回收。主要回收两部分内容:废弃常量和无用的类。频率远低于堆内存。

    垃圾回收算法

    • 可达性算法,GC Roots往下搜索。GC Roots可以是虚拟机栈(栈帧中的本地变量表)中引用的对象等。
    • 复制算法。新生代的算法。两块区域,将存活的复制到新区域,老区域清空。
    • 标记清除算法。第一轮标记废弃对象,第二轮删除他们。
    • 标记整理算法。与标记清除类似,但是删除之后,存活的对象向前移动,避免空间碎片。
    • 新生代都是复制算法,空间不够由老年代来担保。
    • 老年代都是标记整理,多线程的。

    相关文章

      网友评论

          本文标题:JVM内存模型与GC

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