美文网首页
JVM内存模型

JVM内存模型

作者: 夹胡碰 | 来源:发表于2021-02-27 21:37 被阅读0次

    内存模型分区

    简介

    线程持有 概述
    程序计数器 线程私有 当前线程所执行的字节码的行号指示器
    Java虚拟机栈 线程私有 方法执行的时候创建栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息
    本地方法栈 线程私有 与Java虚拟机栈类似,存储native方法的相关信息
    方法区 线程共享 存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据
    线程共享 存储创建的对象

    特殊:本地内存(Native Memory)
    从JDK1.7到1.8,方法区的实现由永久代变成了元空间,元空间的部分数据分配在本地内存中。
    Java8内存模型—永久代(PermGen)和元空间(Metaspace)

    特殊: 直接内存(Direct Memory)

    也叫堆外内存,JDK1.4加入了NIO,涉及到堆外内存分配。
    可以通过 -XX:MaxDirectMemorySize 参数来设置最大可用直接内存,如果启动时未设置则默认为最大堆内存大小,即与 -Xmx 相同。即假如最大堆内存为1G,则默认直接内存也为1G,那么 JVM 最大需要的内存大小为2G多一些。当直接内存达到最大限制时就会触发GC,如果回收失败则会引起OutOfMemoryError。

    相关文章

      网友评论

          本文标题:JVM内存模型

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