美文网首页
JVM内存结构

JVM内存结构

作者: hiningmeng | 来源:发表于2018-09-12 15:58 被阅读0次

    JVM虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同是数据区域,这些区域有各自各自的用途。主要包含以下几个部分组成:

    image.png image.png
    1. 程序计数器占用的内存空间我们可以忽略不计,它是每个线程所执行的字节码的行号指示器。
    2. 虚拟机栈是线程私有的,生命周期和线程相同。它描述的是方法执行的内存模型。同时用于存储局部变量、操作数栈、动态链接、方法出口等。
    3. 本地方法栈,类似虚拟机栈,它调用的是是native方法。
    4. 堆是jvm中管理内存中最大一块。它是被共享,存放对象实例,也被称为“gc堆”。垃圾回收的主要管理区域。 由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配。
    5. 方法区也是共享的内存区域。它主要存储已被虚拟机加载的类信息、常量、静态变量、即时编译器(jit)编译后的代码数据。
    image.png

    控制参数
    -Xms设置堆的最小空间大小。
    -Xmx设置堆的最大空间大小。
    -XX:NewSize设置新生代最小空间大小。
    -XX:MaxNewSize设置新生代最大空间大小。
    -XX:PermSize设置永久代最小空间大小。
    -XX:MaxPermSize设置永久代最大空间大小。
    -Xss设置每个线程的堆栈大小。
    老年代空间大小=堆空间大小-年轻代大空间大小

    相关文章

      网友评论

          本文标题:JVM内存结构

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