美文网首页
Java内存结构

Java内存结构

作者: 淡季的风 | 来源:发表于2020-08-30 21:55 被阅读0次
    1.png

    1. 运行时内存

    如图所示, Java内存结构可以区分为:堆、方法区、虚拟机栈、本地方法栈、程序计数器。

    • 堆(Heap)

    1. 线程共享的一块内存区域, 主要作用是用来存放对象实例和数组。
    2. 占用内存空间最大,是Java垃圾回收重点关注的区域。
    3. 物理上不连续,由一片片空间拼凑而成, 只要逻辑上连续就可以。
    4. 没有内存进行对象实例创建并无法再扩展时, 会抛出OutOfMemoryError异常。
    5. -Xmx -Xms 指定最大、最小堆
    • 方法区(Method Area)

    1. 线程共享、 内存不连续、可扩展、可垃圾回收。
    2. 存储类信息、常量、静态变量、即时编译器编译后的代码等数据。
    • 虚拟机栈(VM Stack)

    1. 线程私有,生命期同线程。
    2. 虚拟机栈描述Java的内存模型,每个方法执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等,每一个方法从调用直至执行完成,对应着一个栈桢在虚拟机栈中的从入栈到出栈。
      3.局部变量表用于存储方法参数和方法定义的局部变量,包含8种基本类型和引用类型等。
    3. 错误类型:StackOverflowError 和 OutOfMemoryError
    • 本地方法栈

    1. 本地方法栈和虚拟机栈类似,本地方法栈用于执行Java调用的本地方法。
    • 程序计数器

    1. 线程私有,内存小, 没有OOM错误
    2. 是当前线程所执行的字节码的行号指示器

    相关文章

      网友评论

          本文标题:Java内存结构

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